安卓自定义按钮的实现
来源:互联网 发布:centos7 源码安装lnmp 编辑:程序博客网 时间:2024/05/22 15:27
如图,在按钮上实现带有个性图片的按钮,可通过复写按钮类来实现。
代码如下:
package moyan.standopen;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;
@SuppressLint("ParserError")
public class mybutton extends Button{
private Paint margainPaint;
private Paint linePaint;
private int paperColor;
private float margain;
private Bitmap bmp;
public mybutton(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public mybutton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init();
}
public mybutton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
//处理按钮按下后的效果
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
linePaint=new Paint(Paint.ANTI_ALIAS_FLAG);
linePaint.setColor(Color.GRAY);
}
if(event.getAction()==MotionEvent.ACTION_UP)
{
linePaint=new Paint(Paint.ANTI_ALIAS_FLAG);
linePaint.setColor(Color.WHITE);
}
invalidate();
return super.onTouchEvent(event);
}
public void init()
{
Resources mtRes=getResources();
bmp=BitmapFactory.decodeResource(mtRes, R.drawable.head_01);
margainPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
margainPaint.setColor(Color.BLACK);
linePaint=new Paint(Paint.ANTI_ALIAS_FLAG);
linePaint.setColor(Color.WHITE);
paperColor=Color.WHITE;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
//canvas.drawColor(paperColor);
//canvas.drawRect(10, 0, getMeasuredHeight(), getMeasuredHeight(), linePaint);
linePaint.setAntiAlias(true);
RectF oval3 = new RectF(0, 0,getMeasuredWidth(), getMeasuredHeight());
canvas.drawRoundRect(oval3, 5, 5, linePaint);//画按钮的形状为圆角矩形
canvas.drawText(">",getMeasuredWidth()-30,getMeasuredHeight()/2,margainPaint);
Rect rect=new Rect(2,2,getMeasuredHeight()-2,getMeasuredHeight()-2);
canvas.drawBitmap(bmp,null, rect, linePaint);//画图片
canvas.save();
canvas.translate(30, 0);
super.onDraw(canvas);
canvas.restore();
}
@Override
public boolean isPressed() {
// TODO Auto-generated method stub
return super.isPressed();
}
public void SetBmp(int bitmap)
{
//在程序中调用,用来设置每个按钮的图片
Resources mtRes=getResources();
bmp=BitmapFactory.decodeResource(mtRes,bitmap);
invalidate();
}
}
在布局中的调用:
<moyan.standopen.mybutton
android:id="@+id/first"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/love"
android:layout_marginLeft="50dip"
android:layout_marginRight="50dip"
android:textSize="12pt"
android:gravity="center"
android:paddingRight="30dip"
android:layout_above="@id/center"
android:layout_marginBottom="20dip"
/>
最后在程序中定义mybutton的对象,通过调用SetBmp()函数来设置图片。
如有不懂或有疑问可以加群 140239644 来讨论。
- 安卓自定义按钮的实现
- 安卓 实现圆角按钮的的自定义和点击圆角按钮按钮实现背景变化
- 安卓自定义按钮
- 安卓自定义按钮
- 安卓如何简单的自定义控件实现按钮点击变色
- 安卓自定义shape并实现带有阴影的按钮背景效果
- 安卓自定义滑动按钮
- 安卓自定义dialog,改变其在主页面的位置和实现dialog上的按钮点击事件
- 安卓实现自定义的主题
- 实现自定义的安卓拍照功能
- 安卓自定义组合控件的实现
- 安卓自定义Dialog的实现
- 安卓自定义相机的实现
- 安卓自定义按钮图片 和形状
- 安卓开发笔记(一)------------自定义按钮
- 安卓的LinearLayout实现按钮的点击效果
- MFC自定义按钮的实现
- 自定义形状按钮的实现
- web界面的设计网站
- 源码浅析: Message/Handler/MessageQueue/Looper
- 项目五体验文件操作
- java反射详解
- 正则表达式的模式字符
- 安卓自定义按钮的实现
- 【Google官方教程】第四课:在UI中显示Bitmap
- C#下datagridview和数据库的同步(sqlite版本)
- javaSE学习笔记——随机点名器
- 网络子系统大杂烩二
- Log4j必知必会
- spring配置datasource
- UVaOJ 340 - Master-Mind Hints
- 【PHP邮件发送】PHPMailer