android自定义Dialog
来源:互联网 发布:淘宝网跳舞毯 编辑:程序博客网 时间:2024/05/05 16:16
1.新建一个项目
取名为CustomDialog,项目结构如图所示:
2.定义一个接口DialogListener
package com.example.customdialog;import android.view.View;public interface DialogListener { public void OnClick(View v);}
3.写一个类CustomDialog继承Dialog
package com.example.customdialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class CustomDialog extends Dialog implements android.view.View.OnClickListener{ TextView tv_message; Button bt_yes,bt_no; ImageView iv_warn; DialogListener dialogListner; String content; Integer resId; //resId是iv_warn.setBackgroundResource(resId);的图片资源 public CustomDialog(Context context, int theme,Integer resId,String content,DialogListener dialogListner){ super(context, theme); this.dialogListner=dialogListner; this.resId=resId; this.content=content; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.custom_dialog); //点击外部不会消失 this.setCanceledOnTouchOutside(false); InitViews(); } private void InitViews(){ iv_warn=(ImageView) findViewById(R.id.iv_warn); tv_message=(TextView) findViewById(R.id.tv_message); iv_warn.setBackgroundResource(resId); tv_message.setText(this.content); bt_yes=(Button) findViewById(R.id.bt_yes); bt_no=(Button) findViewById(R.id.bt_no); bt_yes.setOnClickListener(this); bt_no.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub dialogListner.OnClick(v); dismiss(); } @Override public void dismiss() { super.dismiss(); } }
4.再写一个custom_dialog的配置文件
弹出的自定义Dialog样式在这里进行定义!
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/dialog_custom_bg" android:gravity="center_horizontal" android:orientation="vertical" > <ImageView android:id="@+id/iv_warn" android:layout_width="80dip" android:layout_height="80dip" android:layout_marginTop="15dip" /> <TextView android:id="@+id/tv_message" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="center" android:textSize="18sp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="20dp" android:layout_margin="10dp" > <Button android:id="@+id/bt_yes" android:layout_width="100dp" android:layout_height="wrap_content" android:gravity="center" android:text="@string/btn_yes" /> <Button android:id="@+id/bt_no" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:gravity="center" android:text="@string/btn_no" /> </LinearLayout></LinearLayout>
5.dialog的背景样式
在drawable里新建文件dialog_custom_bg.xml文件,第四步的 custom_dialog.xml里面的LinearLayout的background用到。
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#fff4f4f4" /> <corners android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" android:topLeftRadius="8dp" android:topRightRadius="8dp" /></shape>
6.在style.xml文件里添加自定义的Dialog样式
<style name="Custom_Dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">false</item> </style>
6.定义MainActivity
到这一步基本上大功告成了,就剩下在MainActivity里面调用了,在activity_main里面定义一个Button按钮,这里就不说,后面会附上源码:
package com.example.customdialog;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener { private static String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { Button b = (Button) findViewById(R.id.btn_custom_dialog); b.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_custom_dialog: CustomDialog dialog = new CustomDialog(MainActivity.this, R.style.Custom_Dialog, R.drawable.ic_launcher, "我帅不!", new DialogListener() { @Override public void OnClick(View v) { switch (v.getId()) { case R.id.bt_yes: Log.v(TAG, "是的,你很帅!"); break; case R.id.bt_no: Log.v(TAG, "不是的,你非常帅!"); default: break; } } }); dialog.show(); break; default: break; } }}
到这里我们来看看效果图:
再看看控制台:
7.自定义按钮
看图片是不是发觉按钮不好看,既然是自定义,那我们就自定义按钮,这里用到的是Android选择器的知识,首先定义一个选择器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" android:drawable="@drawable/btn_pressed"></item> <item android:state_pressed="false" android:drawable="@drawable/btn_nomal"></item></selector>
选择器里定义了按下的样式和常态下的样式,分别定义两个资源文件,这里只写一个,因为两个相差不大:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#23BA00" /> <!-- 定义填充的颜色值 --> <!-- 圆角 --> <corners android:radius="5dp" /> <!-- 间隔 --> <padding android:bottom="5dp" android:left="10dp" android:right="10dp" android:top="5dp" /> </shape>
引用的时候只要在button里加上android:background=”@drawable/btn_selector”就可以了。
最后我们看看终极效果图
最后附上源码:
CustomDialog源码
原文地址:http://blog.csdn.net/hanjianc/article/details/49100729
0 0
- 自定义Dialog android Dialog
- 【Android】Dialog以及自定义Dialog
- android 系统Dialog,自定义Dialog
- android 自定义dialog 自定义dialog 宽度问题
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义 dialog
- Android 自定义Dialog分类
- Android Dialog( 自定义对话框)
- Android自定义Dialog
- Android-自定义Dialog样式
- Android 自定义Dialog样式
- Android:自定义dialog
- Android 自定义dialog
- Android自定义Dialog对话框
- Android 自定义dialog
- Android自定义Dialog
- Android自定义Dialog
- 临时用到的文件
- HTTP access control (CORS)
- activity启动模式
- swiper.js——一般属性、进度属性
- gdb入门(下)
- android自定义Dialog
- Js 日期操作
- Lunix下如何查看lunix版本和Weblogic/JDK版本
- 内存随手记
- 二、JavaScript基本数据结构
- python3中django无法展示数据库表内容的解决方法
- 整屏滚动
- 生成图形验证码
- 怎样做才是一个合格的程序员