您的位置:首页 > 移动开发 > Android开发

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样式。比如下面这种:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: