View view = LinearLayout.inflate(context, R.layout.dialog, null); /**
* @param context 上下文
* @param view 自定义的view
* @param size 宽度的
*/
private void initDialog(Context context, View view, float size) {
mDialog = new Dialog(context, R.style.dialogTheme);
mDialog.setContentView(view);
Window window = mDialog.getWindow();
window.setGravity(Gravity.CENTER);
WindowManager windowManager = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
//设置这个dialog的宽高
view.setLayoutParams(new FrameLayout.LayoutParams((int) (display
.getWidth() * size), FrameLayout.LayoutParams.WRAP_CONTENT));
mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
}<style name="dialogTheme" parent="@android:style/Theme.Dialog">
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 模糊 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 遮罩层 -->
<item name="android:backgroundDimAmount">0.5</item>
</style> View popView = LayoutInflater.from(this).inflate(R.layout.layout_popup,PopupWindowList mWindow = new PopupWindowList(MainActivity.this, popView);
.....
//类对象
public class PopupWindowList extends PopupWindow {
public PopupWindowList(Context context, View view) {
super(context);
setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
setOutsideTouchable(true);
setFocusable(true);
setClippingEnabled(false); //设置为false能够该view越过父类(也就是dialog)大小的限制
setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setContentView(view);
}
}//构建一个popupWindow
PopupWindowList mWindow = new PopupWindowList(MainActivity.this, popView);
//在其下方显示
PopupWindowCompat.showAsDropDown(mWindow, layout, 0, 0, Gravity.START);<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/shape_id">
<rotate
android:fromDegrees="45"
android:pivotX="15%"
android:pivotY="-35%">
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</rotate>
</item>
</layer-list> <ImageView
android:id="@+id/iv_select"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/triangle_selecter" />2.代码实例化出ImageView,然后将其旋转90度
mWindow.setOnDismissListener(() -> {
iv.animate().rotationBy(-90.f); //方向朝右
});
layout.setOnClickListener(v -> { //这里的layou是点击的部分
iv.animate().rotationBy(90.f); //方向朝下
});