Android自定义Button [附一个例子吧]
来源:互联网 发布:wps数据透视表求和项 编辑:程序博客网 时间:2024/05/16 05:24
1. 不用再定义Listener
直接调用 performClick ,里面会调用View.OnClickListener
2. Drawable
资源里的真正图形资源,如png, gif等,在加载时实际上都是BitmapDrawable类型的对象。
mIconAccept = (BitmapDrawable)context.getResources()
.getDrawable(R.drawable.latebutton_ok);
应该直接转换成BitmapDrawable对象,以便在canvas里可以直接drawBitmap
3. 图形的显示大小: 虽然图形可能是32*32,但在代码应该调用以下2个函数来获取长宽
mIconAccept.getIntrinsicWidth()
mIconAccept.getIntrinsicHeight()
4. 继承于Button应该会更方便
5. 使用已经存在的attribute
使用android:text属性来设置文本, 在代码用getAttributeValue()来获取。注意namespace要用全称。
<com.friendlocation.LateButton
android:id="@+id/lateButton1"
android:layout_width="300dp"
android:layout_height="36dp"
android:text="查询" />
public LateButton(Context context, AttributeSet attrs)
{
super(context, attrs);
mText = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "text");
if(mText == null) mText = "Default Text";
}
6. 区分编辑状态
public LateButton(Context context, AttributeSet attrs)
{
super(context, attrs);
if(! this.isInEditMode())
{
mIconAccept = (BitmapDrawable)context.getResources()
.getDrawable(R.drawable.latebutton_icon);
}
7. 显示所有属性
for(int i=0; i<attrs.getAttributeCount(); i++)
{
String name = attrs.getAttributeName(i);
String value = attrs.getAttributeValue(i);
//Log.d("mylog", "attr :" + name + "= " + value);
if(name.equals("text"))
mText = value;
}
/* 只是一个例子,大家按照自己的需求修改 */public class LateButton extends Button{boolean mPressed = false;MyHandler mHandler = new MyHandler();int mProgress = 0;String mText = "DefaultText";// 画图Paint mBgPaint = new Paint();Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);public LateButton(Context context, AttributeSet attrs){super(context, attrs);if(! this.isInEditMode()){}mText = attrs.getAttributeValue("http://schemas.android.com/apk/res/android", "text");if(mText == null) mText = "Default Text";}@Overrideprotected void onDraw(Canvas canvas){super.onDraw(canvas);int w = getWidth();int h = getHeight();Rect clientRect = new Rect(0,0,w,h);clientRect.inset(4,4);// 画背景mBgPaint.setColor(0xFFb0c4de);canvas.drawRoundRect(new RectF(clientRect), 4,4, mBgPaint);if(mPressed){...............}mTextPaint.setColor(0xFF444444);mTextPaint.setTextSize(28); mTextPaint.setTextAlign(Align.CENTER);canvas.drawText(mText, clientRect.centerX(), clientRect.centerY()+10, mTextPaint);}@Overridepublic boolean onTouchEvent(MotionEvent e){switch(e.getAction()){case MotionEvent.ACTION_DOWN:{onTapBegin(e.getX(), e.getY());break;}case MotionEvent.ACTION_UP:{onTapEnd(e.getX(), e.getY());break;}}return true;//return this.mDetector.onTouchEvent(event);}// 处理单击事件public void onTapBegin(float x, float y){mPressed = true;this.invalidate();}public void onTapEnd(float x, float y){// 停止 timermTimer.mStop();mTimer = null;mPressed = false;// 响应按钮动作// Log.d("mylog", "........ button is pressed ........");this.performClick(); // View类函数, 触发OnClickListenerthis.invalidate();}}
"极星亲友定位": 简单实用,是一款适用于家人、朋友间的定位软件,实时查询对方的位置并以地图方式展示。非常适合用于家人间使用,少一份担心,多一份安全保证,能及时知道家人的去向,能避免找不到孩子、老人等情形。
(其实时性、自动特性,可以在很大程度上保证家人遇到危险时不掉链子)
不需要对方会使用智能手机,因为软件可以设置白名单自动回复,不需要对方作任何操作就能获取对方的位置。
不需要对方打开软件回复,也不需要事先启动软件。
下载位置:360市场(可以用360手机助手下载, 关键词“极星”,“极星亲友定位”)
- 双方只要安装了本软件,并打开了GPS功能(一般手机都已经打开了),即输入对方手机号、查询位置。
- 可以从通讯录中选择联系人,或从“最近联系人”菜单中直接选择。
- 白名单用于指定受信任的联系人,对他们的查询请求会自动回复。
- 集成地图展示功能,如果手机已经安装了百度地图软件,则可以在地图上展示对方的位置。
- 可以防止误操作:发送按钮采用延时反应设计,只有在按下约1秒后才算是确认发送,并以振动和文字提示您发送成功。
----------------------------------------------------------------------------------------------------------------------------------
- Android自定义Button [附一个例子吧]
- android---制作一个自定义button
- Android实现对话框-附一个完整例子
- android自定义一个带进度条的button
- 【Android】如何设置一个自定义的Button
- 自定义View的一个例子(这里使用了使用了自定义Button)
- Android自定义Button组件
- android自定义button样式
- android之自定义button
- android 自定义button shape
- android 自定义BUtton
- Android自定义Button按钮
- android自定义button样式
- android自定义button样式
- android 自定义button样式
- Android:自定义Button
- android 自定义button
- android 自定义 button样式
- Diffusion of innovations(创新扩散)
- Oracle VM创建共享磁盘并挂ASM
- Spring AOP
- 上拉电阻和下拉电阻的作用
- 后缀数组 查找单词
- Android自定义Button [附一个例子吧]
- 如何使用 linux 定时运行命令—crontab
- java 中文乱码的解决办法!兼容谷歌,IE,FIREFOX(火狐)
- jQuery 选择器(进阶)
- python模拟mysql password密码生成算法
- 放大器的指标定义和分类
- Spring连接MySQL、Oracle和SQL Server的数据库运动连接属性
- Javascript 压缩工具记录
- 平安夜—华信之夜