android开发小技巧(3)dialog自定义弹出框的使用
2015-03-05 11:04
579 查看
今天写一写自定义dialog的使用。有时候我们做项目,为了项目的美观,系统自带的dialog就不大合适了,所以就需要我们自己去定制一个好看的dialog,用来切合项目,我一般是做成一个模板,根据这一个自己修改一下,然后一系列的弹出框就都有了。很简单,需要一个自定义的布局文件,这个需要好好设计下,用shape来美化下就可以做出不错的效果来。先看一下效果:
先上中间效果的代码,其他俩可以稍微修改下布局文件就可以。
public void showOpenPhoneDialog() {
dialog = new Dialog(LongLoveActivity.this, R.style.CustomDialog);
LayoutInflater layoutInflater = (LayoutInflater) LongLoveActivity.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = layoutInflater.inflate(R.layout.longlove_openiphone_item,
null);
dialog.setContentView(myView);
mProgressLogin = (ProgressBar) myView
.findViewById(R.id.refresh_progressbar);
phone = (TextView) myView.findViewById(R.id.ll_phnum);
ok = (Button) myView.findViewById(R.id.negativeButton);
cance = (Button) myView.findViewById(R.id.positiveButton);
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//在这里处理确定按钮事件
}
});
cance.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
//这里处理取消按钮操作
}
});
dialog.show();
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:orientation="vertical"
android:padding="20.0dip" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/dialog_top_bkg"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="40dp" >
<TextView
android:id="@+id/title"
style="@style/text_20_ffffff"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="电话回拨"
android:visibility="visible" />
<ProgressBar
android:id="@+id/refresh_progressbar"
android:layout_width="24dip"
android:layout_height="24dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dip"
android:visibility="invisible" >
</ProgressBar>
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2.0px"
android:background="#d0d0d0" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40.0dip"
android:layout_gravity="bottom"
android:background="@drawable/dialog_bottom_bg"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="2" >
<TextView
android:id="@+id/ll_phonenum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="电话号码:" />
<EditText
android:id="@+id/ll_phnum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="6dip"
android:minWidth="100dip"
android:numeric="integer"
android:singleLine="true" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="30.0dip"
android:layout_gravity="bottom"
android:background="@drawable/dialog_bottom_bg"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="2" >
<TextView
android:id="@+id/tvname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="例如:053182605000/15098770000" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1.0px"
android:background="#ffd0d0d0" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40.0dip"
android:layout_gravity="bottom"
android:background="@drawable/dialog_bottom_bg"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:id="@+id/positiveButton"
style="@style/text_15_666666_sdw"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="@drawable/common_wite_btn_selector"
android:gravity="center"
android:text="@string/cancel" />
<Button
android:id="@+id/negativeButton"
style="@style/text_15_666666_sdw"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="-1dp"
android:layout_weight="1"
android:background="@drawable/common_wite_btn_selector"
android:gravity="center"
android:text="@string/ok" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
style样式:
<style name="text_20_ffffff">
<item name="android:textSize">19sp</item>
<item name="android:textColor">#4169E1</item>
</style>
背景样式(这里就用到了shape):dialog_bottom_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient android:startColor="#4fe7e7e7" android:endColor="#4fe7e7e7" android:angle="0.0" />
<corners android:topLeftRadius="0.0dip" android:topRightRadius="0.0dip" android:bottomLeftRadius="15.0px" android:bottomRightRadius="15.0px" />
</shape>
</item>
</layer-list>
俩按钮的动态效果shape文件:common_wite_btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下的效果 -->
<item android:state_pressed="true" >
<shape>
<!-- 渐变 -->
<gradient
android:startColor="#C0C0C0"
android:endColor="#C0C0C0"
android:angle="270" />
<!-- 描边 -->
<stroke
android:width="1dp"
android:color="#808080" />
<!-- 圆角 -->
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<!-- 选中的效果 -->
<item android:state_focused="true" >
<shape>
<gradient
android:startColor="#F5F5F5"
android:endColor="#F5F5F5"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#808080" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<!-- 常态的效果 -->
<item>
<shape>
<gradient
android:startColor="#F5F5F5"
android:endColor="#F5F5F5"
android:angle="270" />
<!-- 描边 -->
<stroke
android:width="1dp"
android:color="#808080" />
<corners
android:topRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="0dp"
android:bottomRightRadius="0dp"
/>
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
以上就是所有代码了,直接粘贴复制就可以用了,里面有些字体样式如果没有删除就行,或者引入自己定义好的样式,不报错运行基本上就是中间效果的样式了。
------------------------------------------------------------------------传说中的分割线----------------------------------------------------------------------
然后其实dialog还可以半透明和圆角,大家可以试着修改以上的布局文件和shape文件,完全可以形成自己一系列的dialog样式。比如下面这种:
相关文章推荐
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android手机开发:Dialog的使用
- Android地图开发:自定义地图弹出框内容
- android自定义dialog弹出框、透明背景
- android开发-使用Dialog AlertDialog ----模态异步
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android 程式开发:(九)使用活动栏 —— 9.3自定义ActionBar项目和程序图标
- android开发-使用Dialog AlertDialog
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android开发中Dialog对话框的使用
- Android提高篇之自定义dialog实现processDialog“正在加载”效果、使用Animation实现图片旋转
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android AlertDialog 方法setView(view,0,0,0,0)开发自定义对话框
- android开发中-使用Dialog prompt获取输入信息
- Android开发中Dialog对话框的使用
- android 自定义dialog弹出和消失动画
- Air for Android开发中使用Back键弹出是否退出对话框
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- android开发中-使用Dialog ProgressDialog