[Android分享] DialogFragment初次了解学习

来源:互联网 发布:js鞋子是什么牌子 编辑:程序博客网 时间:2024/05/17 23:46

该篇文章从eoeAndroid搬迁过来的,原文地址:[Android分享] DialogFragment初次了解学习

DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。

在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。兼容低版本sdk需要引用support-v4包的DialogFragment 创建一个dialogfragment的方法跟创建fragment的方法一样,新建一个类TestDialog,继承DialogFragment,重写onCreateView方法,在onCreateView方法里面加载布局,初始化控件,设置控件监听方法,处理业务逻辑等。

package com.example.testdialog;import android.app.DialogFragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.EditText;import android.widget.Toast;public class TestDialog extends DialogFragment implements OnClickListener {        private EditText et_content;        @Override        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {                // TODO Auto-generated method stub                View view = inflater.inflate(R.layout.dialog_test, null);                et_content = (EditText) view.findViewById(R.id.dialog_edit);                view.findViewById(R.id.dialog_cancel).setOnClickListener(this);                view.findViewById(R.id.dialog_certain).setOnClickListener(this);                return view;        }        @Override        public void onClick(View v) {                // TODO Auto-generated method stub                switch (v.getId()) {                case R.id.dialog_cancel:                        dismiss();                        break;                case R.id.dialog_certain:                        Toast.makeText(getActivity(), "内容:" + et_content.getText().toString(), Toast.LENGTH_SHORT).show();                        dismiss();                        break;                default:                        break;                }        }}

布局文件dialog_test.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:orientation="vertical" >    <EditText        android:id="@+id/dialog_edit"        android:layout_width="match_parent"        android:layout_height="120dp"        android:hint="请填写内容" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <Button            android:id="@+id/dialog_cancel"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="取消" />        <Button            android:id="@+id/dialog_certain"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="确定" />    </LinearLayout></LinearLayout>

这里写图片描述

去除标题

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); 

这里写图片描述

背景透明设置

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

DialogFragment可以设置弹出位置,窗体大小,以及弹出或消失动画,需要在onstart方法里面添加相应的代码

修改弹出位置以及窗体大小

@Override        public void onStart() {                // TODO Auto-generated method stub                super.onStart();                WindowManager.LayoutParams layoutParams = getDialog().getWindow().getAttributes();                DisplayMetrics displayMetrics = new DisplayMetrics();                getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);                layoutParams.width = displayMetrics.widthPixels;                layoutParams.height = 800;                layoutParams.gravity = Gravity.BOTTOM;                getDialog().getWindow().setAttributes(layoutParams);        }

这里写图片描述

添加动画效果

 layoutParams.windowAnimations = R.style.style_dialog_test_anim;

动画样式

 <style name="style_dialog_test_anim">        <item name="android:windowEnterAnimation">@anim/anim_dialog_show</item>        <item name="android:windowExitAnimation">@anim/anim_dialog_dimiss</item>    </style>

弹出动画anim_dialog_show.xml

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="500"    android:fromXDelta="0%"    android:fromYDelta="100%"    android:toXDelta="0%"    android:toYDelta="0%" ></translate>

消失动画anim_dialog_dimiss.xml

<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="500"    android:fromXDelta="0%"    android:fromYDelta="0%"    android:toXDelta="0%"    android:toYDelta="100%" ></translate>

这里写图片描述

下载地址:项目代码

0 0
原创粉丝点击