DialogFragment使用记录
来源:互联网 发布:mac全屏截图快捷键 编辑:程序博客网 时间:2024/05/21 16:22
官方推荐DialogFragment,今天简单使用了一下,然后结合自己以前项目中遇到的问题,发现还是很好用的,所以决定以后就用DialogFragment了,特此总结。
效果图(R.layout.dialogtext2布局是个简单的线性布局,直接拖了一imageview两个textview,不再列出):
(关于Dialog转屏过程中会消失而且数据丢失,而DialogFragment可以记录数据的问题不再多说,网上比较多)
一.创建
关于创建有两种方式,都需要继承DialogFragment
a. 第一种,在onCreateDialog中创建
这种方式和我们之前的通过alertdialog生成弹窗方式一样,创建一个dialog,直接看代码:
public class CreatDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); LayoutInflater layoutInflater = getActivity().getLayoutInflater(); View v = layoutInflater.inflate(R.layout.dialogtext, null); dialogBuilder.setView(v).setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getActivity(), "clicked", Toast.LENGTH_SHORT).show(); } }).setNegativeButton("cancle", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); AlertDialog alertDialog = dialogBuilder.create(); return alertDialog; }}
在mainacitvity的的调用为:
public void click2(View v){ CreatDialog creatDialog=new CreatDialog(); creatDialog.show(getFragmentManager(),"title"); }
效果图(R.layout.dialogtext2布局是个简单的线性布局,直接拖了一imageview两个textview,不再列出):
b. 第二种,在onCreateView中创建
public class MyDialog extends DialogFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.dialogtext2,container); return view; }}就是自己定义一个view,直接使用,在mainactivity的调用和上面一样:
public void click(View v){ MyDialog myDialog=new MyDialog(); myDialog.show(getFragmentManager(),"title"); }效果图如下:
可以看到有空白title,在onCreateView调用去掉:getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
二.常用设置
1.背景图片
我以前的一家公司喜欢用一些圆角卡通一些的点9图片做背景,这里也好设置:
首先去掉弹窗自己的背景,在onCreateView调用:
getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent);
然后在我们自己的布局R.layout.xxx中将背景设为我们的图片:android:background="@mipmap/bg"即可
效果图(好丑,哈哈,主要知道去掉弹窗背景的方式就行了)
2.大小
a.在onCreate设置个主题,比如下面的,可以是宽度占慢这个屏幕setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo_Light_Dialog_MinWidth);b.获取屏幕值,去设置大小@Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); dialog.getWindow().setLayout((int) (dm.widthPixels * 0.7), ViewGroup.LayoutParams.WRAP_CONTENT); } }效果图分别如下:3.弹窗位置
和上面大小b方式相似,调用window.setGravity()dialog.getWindow()..setGravity(Gravity.BOTTOM);
效果图:
4.添加动画
给window指定一个windowAnimations
dialog.getWindow().getAttributes().windowAnimations = R.style.dialogAnim;dialogAnim是定义的弹窗style
<style name="dialogAnim" mce_bogus="1" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/dialog_push_in</item> <item name="android:windowExitAnimation">@anim/dialog_push_out</item> </style>
效果图不再展示,就是一个从下往上进入的效果。
以上是我之前做项目中常遇到的一些用法,对于普通的弹窗来说应该已经足够了。针对一些list等特殊弹窗,等用到后再总结.....
0 0
- DialogFragment使用记录
- DialogFragment 使用记录
- 使用DialogFragment
- dialogfragment使用
- DialogFragment 使用
- DialogFragment 使用
- 使用DialogFragment
- DialogFragment使用
- 使用DialogFragment
- DialogFragment使用
- Using DialogFragment ——使用DialogFragment
- Android:DialogFragment的使用
- Dialog与DialogFragment使用
- ApiDemos--DialogFragment的使用
- android DialogFragment简单使用
- DialogFragment的使用示例
- 使用DialogFragment 代替 Dialog
- 使用DialogFragment托管dialog
- Dragger2入门
- web前端性能优化
- BZOJ1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 后缀数组
- ZooKeeper-3.4.9集群安装配置及注意事项
- 接口回调----点击item中的ImageView,在Activity中显示dialog
- DialogFragment使用记录
- OpenBLAS,Numpy,Scipy For Linux(编译最新完成)
- 顺序表的建立
- Android 性能优化——内存篇
- 短时傅里叶变换
- 最大的对手就是最好的朋友
- 使用Jenkins在调用Unity命令行参数生成Android的APK包时构建不出
- uva10828 Back to Kernighan-Ritchie
- 实现验证码的刷新