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 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操 ...
随机推荐
- 扩增子分析解读5物种注释 OTU表操作
本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...
- mysqlworkbench 执行update语句报错:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY colum ...
- vi 命令学习(二)
[选中文本(可视模式)] v 可视模式 从光标位置开始按正常模式选择文本 V 可视行模式 选中光标经过的完整行 ctrl + v 可视块模式 垂直方向选中文本 [ 撤销和恢复撤销] u undo 撤销 ...
- 梦想MxWeb3D协同设计平台 2019.02.28更新
梦想MxWeb3D协同设计平台 2019.02.28更新 SDK开发包下载地址: http://www.mxdraw.com/ndetail_10130.html 在线演示网址: http://www ...
- 用Docker构建Tomcat镜像
构建tomcat镜像 创建工作目录 [root@elk-node2 tomcat]# mkdir tomcat [root@elk-node2 tomcat]# cd tomcat [root@elk ...
- Luogu P1311 选择客栈
暴力 我一开始做这道题先想到的就是暴力... 所以先说一下暴力的做法.首先在输入的时候讲花费小于P的位置标记下来,然后用两层循环枚举所有的两个客栈的组合方案.再用一层循环将两个客栈之间的位置扫一遍,如 ...
- [luogu3067 USACO12OPEN] 平衡的奶牛群
传送门 Solution 折半搜索模板题 考虑枚举每个点在左集合和右集合或者不在集合中,然后排序合并即可 Code //By Menteur_Hxy #include <cmath> #i ...
- html option选中 回显 取值
1.html <select class="form-control" id="sex"> <option value="-1&qu ...
- php利用32进制实现对id加密解密
前言 最近在项目中遇到一个问题,当前用户分享一个邀请码给好友,好友根据邀请码注册成为新用户之后,则成为当前用户的下级,特定条件下,可以得到下级用户的一系列返利.这里要实现的就是根据当前用户的id,生成 ...
- unigui+fastreport 打印【4】
1.建立一个uniForm,用于建立FastReport打印界面.在Form上增加uniFrame.和传统的的报表打印设计一样一样的. 2.在beofeShow事情中: procedure TUniF ...