Android自己定义提示框
在开发中,假设感觉系统自带的提示框不好看,开发人员能够自定义提示框的样式。主要是继承Dialog
程序文件夹结构
关键代码
package com.dzt.custom.dialog; import android.app.Dialog;
import android.content.Context;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView; /**
* 自己定义对话框
*
*
*/
public class CustomDialog extends Dialog implements
android.view.View.OnClickListener {
private static int default_width = 400; // 默认宽度
private static int default_height = 200;// 默认高度
private static String mShowText = null;
private TextView mText = null; public CustomDialog(Context context) {
super(context);
} public CustomDialog(Context context, int layout, int style, String msg) {
this(context, default_width, default_height, layout, style, msg);
} public CustomDialog(Context context, int width, int height, int layout,
int style, String msg) {
super(context, style);
// 设置内容
setContentView(layout);
mShowText = msg;
initWidgets();
// 设置窗体属性
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
// 设置宽度、高度、密度、对齐方式
float density = getDensity(context);
params.width = (int) (width * density);
params.height = (int) (height * density);
params.gravity = Gravity.CENTER;
window.setAttributes(params); } @Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("stop");
} /**
* 初始化提示框中的控件
*/
private void initWidgets() {
CustomImageButton btn = (CustomImageButton) findViewById(R.id.btn_ok);
btn.setOnClickListener(this);
btn = (CustomImageButton) findViewById(R.id.btn_cancel);
btn.setOnClickListener(this);
mText = (TextView) findViewById(R.id.dlg_tv_text);
mText.setText(mShowText);
} /**
* 获取显示密度
*
* @param context
* @return
*/
public float getDensity(Context context) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
return dm.density;
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_ok:
if (listener != null)
listener.onClickOk();
System.out.println("you click ok button---------");
break;
case R.id.btn_cancel:
if (listener != null)
listener.onClickCancel();
System.out.println("you click cancel button-------");
break;
default:
break;
}
} public void setOnClickBtnListener(OnClickBtnListener listener) {
this.listener = listener;
} private OnClickBtnListener listener = null; public interface OnClickBtnListener {
public void onClickOk(); public void onClickCancel();
}
}
在提示框中对两个按钮设置了监听器。按钮也是自己定义的
package com.dzt.custom.dialog; import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageButton; /**
* 自己定义ImageButton 能够在ImageButton上面设置文字
*/
public class CustomImageButton extends ImageButton {
private static final String TAG = "CustomImageButton_dzt";
private String mtext = "";
private int mcolor = 0;
private float mtextsize = 0f;
private Paint mpatin; public CustomImageButton(Context context, AttributeSet attrs) {
super(context, attrs);
initAttrs(attrs);
} private void initAttrs(AttributeSet attrs) {
TypedArray array = getContext().obtainStyledAttributes(attrs,
R.styleable.CustomButtonAttrs);
mtext = array.getString(R.styleable.CustomButtonAttrs_textValue);
mcolor = array.getColor(R.styleable.CustomButtonAttrs_textColor, 230);
mtextsize = array.getDimension(R.styleable.CustomButtonAttrs_textSize,
25.0f);
array.recycle(); // 回收资源
mpatin = new Paint();
mpatin.setTextAlign(Align.CENTER);
Log.d(TAG, "mtextsize = " + mtextsize);
} public void setText(String text) {
this.mtext = text;
} public void setColor(int color) {
this.mcolor = color;
} public void setTextSize(float textsize) {
this.mtextsize = textsize;
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mpatin.setColor(mcolor);
mpatin.setTextSize(mtextsize);
canvas.drawText(mtext, canvas.getWidth() / 2,
(canvas.getHeight() / 2)+10, mpatin);
}
}
在调用时也很easy
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_show_dialog:
customDialog = new CustomDialog(this, R.layout.dialog_layout,
R.style.DialogTheme, getResources().getString(
R.string.text_show));
customDialog.show();
customDialog.setOnClickBtnListener(new OnClickBtnListener() { @Override
public void onClickOk() {
// TODO Auto-generated method stub
System.out.println("you click ok button");
// 处理点击OK时的操作
// ...............
customDialog.cancel();
} @Override
public void onClickCancel() {
// TODO Auto-generated method stub
System.out.println("you click cancel button");
// 处理点击Cancel时的操作
// ...................
customDialog.cancel();
}
});
break; default:
break;
}
}
须要源代码的能够到:http://download.csdn.net/detail/deng0zhaotai/7760615
Android自己定义提示框的更多相关文章
- Android 讲述Help提示框
Android 讲述Help提示框 XML/HTML代码 <stringname="help_dialog_text"> <i>Author:fonter. ...
- Cocos2d-x C++调用Android弹出提示框
转载请注明地址,谢谢.. Cocos2d-x中提供了一个JniHelper类来让我们对Jni进行操作. (PS:弄了一天想自己写代码操作Jni的,但是总是出错,技术差不得不使用Cocos2d-x现成的 ...
- Android 的一些提示框
1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...
- Android开发 ---构建对话框Builder对象,消息提示框、列表对话框、单选提示框、多选提示框、日期/时间对话框、进度条对话框、自定义对话框、投影
效果图: 1.activity_main.xml 描述: a.定义了一个消息提示框按钮 点击按钮弹出消息 b.定义了一个选择城市的输入框 点击按钮选择城市 c.定义了一个单选提示框按钮 点击按钮选择某 ...
- 使提示框居中显示&自定义提示框
ToastActivity.java文件: 1 public class ToastActivity extends AppCompatActivity { 2 private Button mbtn ...
- Java-Android 之输入提示框
Android的文本提示框有两种方式: main.xml文件 <?xml version="1.0" encoding="utf-8"?> < ...
- 基于jQuery消息提示框插件Tipso
今天要分享的这款jQuery消息提示框插件名叫Tipso,它的特点是可以定义提示框的显示位置,以及动态改变提示框的提示内容,应该说是一款相当灵活的jQuery消息提示框插件.效果图如下: 在线预览 ...
- [转]Angular——提示框
本文转自:https://blog.csdn.net/whm18322394724/article/details/80177950 版权声明:本文为博主原创文章,未经博主允许不得转载. https: ...
- Android自己定义控件(状态提示图表)
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重分享成果] 1 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操 ...
随机推荐
- bootstrap3无间距栅格/grid no-gutter
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 关于 . H 宏定义技巧
#ifndef LABEL #define LABEL //代码部分 #endif LABEL为一个唯一的标号,命名规则跟变量的命名规则一样.常根据它所在的头文件名来命名,例如,如果头文件的文 ...
- KM算法(Kuhn-Munkres)
算法理论基础: 可行顶点标号 用l(v)表示顶点v的标号,w(uv)表示边(u,v)的权,对于赋权二分图G=(X,Y),若对每条边e=xy,均有l(x)+l(y)>=w(xy),则称这个标号为G ...
- 浅谈IFC
IFC布局规则: 在一个行内格式化上下文中,盒是一个接一个水平放置的,从包含块的顶部开始 这些盒之间的水平margin,border和padding都有效 盒可能以不同的方式竖直对齐:以它们的底部或者 ...
- swift中tableview的使用和注意事项
今天使用swift写了个简单的tableView,语法和用法上跟oc没多大的区别.但是还是有一些细节的地方需要注意一下的. 先上代码 import UIKit class ViewController ...
- 洛谷——P1972 [SDOI2009]HH的项链(线段树)
P1972 [SDOI2009]HH的项链 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的 ...
- oracle 清理跟踪文件.trc .trm
trc,trm文件介绍:trc:系统的跟踪文件(trace),当系统启动时或运行过程中出现错误时,系统会自动记录跟踪文件到指定的目录,以便于检查,这些文件需定期维护删除.trm:伴随着.trc文件产生 ...
- 每日命令:(5)rm
昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...
- vue列表渲染,以及鼠标点击改变样式的问题
在实际项目中,我们进场会遇到鼠标点击该表某个DOM元素的样式,在原生的js或者jquery中,我们会比较熟练的实现这个需求,但是在vue中怎么实现呢? 直接操作DOM?NO!NO! 既然我们的项目使用 ...
- 1.ARM嵌入式体系结构与接口技术(Cortex-A8版)
第1章 嵌入式系统基础知识 ---->1.1嵌入式系统的概述 -------->1.1.1嵌入式系统简介 -------->1.1.2嵌入式系统的特点 -------->1.1 ...