android popupwindow
16lz
2021-12-04
直接上代码
public class MainActivity extends Activity implements OnClickListener {private Button btnPopup;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnPopup = (Button) findViewById(R.id.btn);btnPopup.setOnClickListener(this);}public void onClick(View v) {showDialog();}private void showDialog() {View view = getLayoutInflater().inflate(R.layout.photo_choose_dialog, null);Dialog dialog = new Dialog(this, R.style.transparentFrameWindowStyle);dialog.setContentView(view, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));Window window = dialog.getWindow();// 设置显示动画window.setWindowAnimations(R.style.main_menu_animstyle);WindowManager.LayoutParams wl = window.getAttributes();wl.x = 0;wl.y = getWindowManager().getDefaultDisplay().getHeight();// 以下这两句是为了保证按钮可以水平满屏wl.width = ViewGroup.LayoutParams.MATCH_PARENT;wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;// 设置显示位置dialog.onWindowAttributesChanged(wl);// 设置点击外围解散dialog.setCanceledOnTouchOutside(true);dialog.show();}}
activity_main.xml 的布局文件就不上传了 就一个button, photo_choose_dialog.xml 布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00000000" android:gravity="bottom" android:orientation="vertical" android:padding="5dip" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/photo_gallery_selector" android:paddingBottom="10dip" android:paddingTop="10dip" android:text="图库" android:textSize="16sp" /> <TextView android:layout_width="match_parent" android:layout_height="0.5dip" android:background="#DAD9DB" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/photo_camera_selector" android:paddingBottom="10dip" android:paddingTop="10dip" android:text="拍照" android:textSize="16sp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:background="@drawable/photo_cancel_selector" android:paddingBottom="10dip" android:paddingTop="10dip" android:text="取消" android:textSize="16sp" /></LinearLayout>弹出的效果图
图中button 设置了圆角
代码如下:
<?xml version="1.0" encoding="UTF-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="90" android:endColor="#EBEBEB" android:startColor="#EBEBEB" /> <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" android:topLeftRadius="0dp" android:topRightRadius="0dp" /></shape>
style 文件:
<?xml version="1.0" encoding="utf-8"?><resources> <style name="transparentFrameWindowStyle" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@drawable/photo_choose_bg</item> </style> <style name="main_menu_animstyle"> <item name="android:windowEnterAnimation">@anim/photo_dialog_in_anim</item> <item name="android:windowExitAnimation">@anim/photo_dialog_out_anim</item> </style></resources>
动画效果文件:
photo_dialog_in_anim.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromXDelta="0" android:fromYDelta="1000" android:toXDelta="0" android:toYDelta="0" /></set>
photo_dialog_out_anim.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="1000" /></set>
photo_choose_bg.xml 文件
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#00000000" /> <corners android:radius="20dip" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /></shape>
更多相关文章
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- Android(安卓)音乐播放器。
- android 安装apk代码
- Android统计表格MPAndroidChart解析
- android 代码 退出程序
- Android实现widget定时更新
- Android(安卓)WebView相关属性
- Android(安卓)9 读写SD卡文件