PopupWindow
效果图:
点击后弹出
效果图,具体嗨可以自定义里面添加属性,背景颜色图片透明度等等。
自定义
public class MyPopupWindow extends PopupWindow implements View.OnClickListener{
private Context context ;
private View view ;
private Button button1 , button2 ,button3 ;
public MyPopupWindow(Context context) {
super(context);
this.context = context;
//绑定布局
Log.e("---------","33333333333333");
view = LayoutInflater.from(context).inflate(R.layout.popupwindow_layout,null);
//实例化控件
init();
//设置外部可以点击
setOutsideTouchable(true);
//设置窗口
setContentView(view);
//设置弹出窗的高度
setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
//设置弹出窗的宽度
setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
//设置弹出窗可点击
setFocusable(true);
//设置弹出窗动画
setAnimationStyle(R.style.my_popupWindow_anim);
//设置点击区域,如若在选项框外,则退出弹出框。
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int height = view.findViewById(R.id.pp_layout).getTop();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP){
if (y < height){
dismiss();
}
}
return true;
}
});
}
private void init() {
button1 = view.findViewById(R.id.button1) ;
button1.setOnClickListener(this);
button2 = view.findViewById(R.id.button2) ;
button2.setOnClickListener(this);
button3 = view.findViewById(R.id.button3) ;
button3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button3:
dismiss();
break;
case R.id.button2:
Toast.makeText(context,"点击了按钮2",Toast.LENGTH_SHORT).show();
break;
case R.id.button1:
Toast.makeText(context,"点击了按钮1",Toast.LENGTH_SHORT).show();
break;
}
}
}
调用
public void onClick(View v) {
switch (v.getId()){
case R.id.xz_button:
MyPopupWindow myPopupWindow = new MyPopupWindow(getApplicationContext());
// main_view是从哪个界面上弹出popopWindow的那个view布局。
myPopupWindow.showAtLocation(findViewById(R.id.main_view), Gravity.CENTER,0,0);
break;
}
}
XML布局
anim显示方式
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromYDelta="100%p"
android:toYDelta="0" />
<alpha
android:duration="200"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
anim退出方式
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromYDelta="0"
android:toYDelta="50%p" />
<alpha
android:duration="200"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
在them资源里创建style
<style name="my_popupWindow_anim" parent="Animation.Design.BottomSheetDialog">
<item name="android:windowEnterAnimation">@anim/enter</item>
<item name="android:windowExitAnimation">@anim/exit</item>
</style>
学习时间:
提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点
学习产出:
提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个