使用Activity做弹窗
2016-04-16 11:36
204 查看
弹窗的实现形式有很多种,eg:Dialog、PopupWindow等。
今天跟大家写一个使用Activity实现的弹窗。
布局文件:
跟一般的activity布局一样,唯一的区别就是需要写死根布局的宽高,嗯……我还没有找到更优雅的写法……
Activity:
这里点击外部区域 弹窗消失 写的比较粗暴…… 但是因为给需要点击的区域加了点击事件 所以不会有影响。
下面关键的部分来了:
在 manifest文件中
style:
设置背景色
设置windowFrame框 这里不显示
是否浮现在activity之上(底部的activity)
窗口是否半透明 配合背景色使用
窗口弹出样式
是否设置背景模糊
*弹窗是否有遮盖 不设置的话有可能会出现边界黑线
有问题欢迎留言提出,之后会用这种方法 写一个更换头像的demo 请看后边的博文
要demo的请加扣扣群:
454430053 找管理员 漫步
今天跟大家写一个使用Activity实现的弹窗。
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="280dp" android:layout_height="190dp" android:background="@drawable/shape_avatar_change_bg" android:orientation="vertical" android:weightSum="14"> <TextView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="4" android:gravity="center" android:text="@string/changeAvatar" android:textColor="@color/status_color" android:textSize="16sp"/> <ImageView android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/status_color"/> <TextView android:id="@+id/tv_take_photo" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5" android:background="@drawable/seletor_bg_setting_item" android:gravity="center" android:text="@string/takePhoto" android:textColor="@color/light_black_color" android:textSize="16sp"/> <ImageView android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/layout_divider_color"/> <TextView android:id="@+id/tv_chose_gallery" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="5" android:background="@drawable/seletor_bg_setting_item" android:gravity="center" android:text="@string/choseFromGallery" android:textColor="@color/light_black_color" android:textSize="16sp"/> </LinearLayout>
跟一般的activity布局一样,唯一的区别就是需要写死根布局的宽高,嗯……我还没有找到更优雅的写法……
Activity:
public class ChangeAvatarActivity extends Activity { private static int CAMERA_REQUEST_CODE = 1; private static int GALLERY_REQUEST_CODE = 2; private static int CROP_REQUEST_CODE = 3; private TextView tvFromGallery; private TextView tvTakePhoto; private File img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.avatar_revise_activity); initViews(); } private void initViews() { tvTakePhoto = (TextView) findViewById(R.id.tv_take_photo); tvFromGallery = (TextView) findViewById(R.id.tv_chose_gallery); //拍照 tvTakePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); //从相册选 tvFromGallery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } @Override public boolean onTouchEvent(MotionEvent event) { finish();//点击窗口外部区域 弹窗消失 return true; } }
这里点击外部区域 弹窗消失 写的比较粗暴…… 但是因为给需要点击的区域加了点击事件 所以不会有影响。
下面关键的部分来了:
在 manifest文件中
<activity android:name=".activity.ChangeAvatarActivity" android:theme="@style/MyDialogActivityStyle"/>
style:
<style name="MyDialogActivityStyle"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:backgroundDimEnabled">true</item> </style>
解释一下:
<item name="android:windowBackground">@android:color/transparent</item>
设置背景色
<item name="android:windowFrame">@null</item>
设置windowFrame框 这里不显示
<item name="android:windowIsFloating">true</item>
是否浮现在activity之上(底部的activity)
<item name="android:windowIsTranslucent">true</item>
窗口是否半透明 配合背景色使用
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
窗口弹出样式
<item name="android:backgroundDimEnabled">true</item>
是否设置背景模糊
<item name="android:windowContentOverlay">@null</item>
*弹窗是否有遮盖 不设置的话有可能会出现边界黑线
有问题欢迎留言提出,之后会用这种方法 写一个更换头像的demo 请看后边的博文
要demo的请加扣扣群:
454430053 找管理员 漫步
相关文章推荐
- ie9下关闭弹出窗口出现__flash__removeCallback未定义错误
- 突破winxp sp2/win2003 sp2超强弹窗代码
- 全面解析Bootstrap弹窗的实现方法
- 禁止iframe页面的所有js脚本如alert及弹出窗口等
- Android实现将一个Activity设置成窗口样式的方法
- BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
- JS非Alert实现网页右下角“未读信息”效果弹窗
- js实现弹出窗口、页面变成灰色并不可操作的例子分享
- JavaScript 实现简单的倒计时弹窗DEMO附图
- Android Activity 完全结束并退出程序的实例
- Android开发 旋转屏幕导致Activity重建解决方法
- android横竖屏切换时候Activity的生命周期
- Android学习笔记--使用剪切板在Activity中传值示例代码
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- js点击弹出div层实现可拖曳的弹窗效果
- android PopupWindow 和 Activity弹出窗口实现方式
- Android Fragment 基本了解(图文介绍)
- Android一次性退出多个Activity的方法
- Android开发中关于获取当前Activity的一些思考
- Android开发中Activity属性设置小结