import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageView;
public class MyButtonView extends ImageView{
private Bitmap animBitmap = null;
private Bitmap buttonBitmap = null;
private int moveX = 0;
private boolean isPress = false;
private int timeID = 0;
private Integer myButtonID[] = new Integer[]{
R.drawable.mybutton01,
R.drawable.mybutton02,
R.drawable.mybutton03,
R.drawable.mybutton04,
R.drawable.mybutton05,
R.drawable.mybutton06,
R.drawable.mybutton07,
R.drawable.mybutton08,
R.drawable.mybutton09,
R.drawable.mybutton10,
R.drawable.mybutton11,
R.drawable.mybutton12,
R.drawable.mybutton13,
R.drawable.mybutton14,
R.drawable.mybutton15,
R.drawable.mybutton16,
R.drawable.mybutton17,
R.drawable.mybutton18,
R.drawable.mybutton19,
R.drawable.mybutton20
};
public MyButtonView(Context context) {
this(context, null);
}
public MyButtonView(Context context, AttributeSet attrs) {
super(context,attrs);
animBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myutil);
buttonBitmap = BitmapFactory.decodeResource(getResources(),myButtonID[0]);
new Thread(new MyThread()).start();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawImage(canvas,0,0,animBitmap,moveX,0,200,100);
canvas.drawBitmap(buttonBitmap,20,15, null);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(131, 53);
}
private void drawImage(Canvas canvas , int x, int y,Bitmap oldBitmap , int sx,int sy,int width ,int height){
Rect rect_x = new Rect();
rect_x.left = sx;
rect_x.right = sx + width;
rect_x.top = sy;
rect_x.bottom = sy + height;
Rect rect_y = new Rect();
rect_y.left = x;
rect_y.right = x + width;
rect_y.top = y;
rect_y.bottom = y + height;
//按指定的裁剪矩形来绘制图片
//分别是屏幕上的矩形和图片上要绘制的矩形裁剪
Bitmap output = Bitmap.createBitmap(oldBitmap.getWidth(),
oldBitmap.getHeight(), Config.ARGB_8888);
Canvas canvas2 = new Canvas(output);
Paint paint = new Paint();
paint.setAntiAlias(true);
//canvas.drawARGB(0, 0, 0, 0);
//paint.setColor(0xff424242);
//paint.setAlpha(140);
//canvas2.drawRoundRect(new RectF(2,4,130,50), 10.0f, 10.0f, paint);
canvas2.drawRoundRect(new RectF(1,0,130,50), 15.0f, 15.0f, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas2.drawBitmap(oldBitmap, rect_x, rect_y, paint);
canvas.drawBitmap(output, 0 , 0, null);
rect_x = null;
rect_y = null;
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
/* if(isReleased){
touchPoint = new Point();
touchPoint.x = (int)event.getX();
touchPoint.y = (int)event.getY();
}*/
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
isPress = true;
break;
case MotionEvent.ACTION_UP:
isPress = false;
break;
default:
break;
}
return true;
}
private class MyThread implements Runnable{
@Override
public void run() {
while(!Thread.currentThread().isInterrupted()){
try {
moveX++;
if(moveX > 100){
moveX = 0;
}
if(isPress){
timeID ++ ;
if(timeID <20){
buttonBitmap = BitmapFactory.decodeResource(getResources(), myButtonID[timeID]);
}else{
timeID =0 ;
}
}
Thread.sleep(50);
} catch (Exception e) {
Thread.currentThread().interrupt();
}
postInvalidate();
}
}
}
}
分享到:
相关推荐
自定义圆角动画按钮 2011.10.16
自定义纯色圆角按钮样式,不用图片也可以实现纯色按钮的效果!
在xml布局文件中实现自定义圆角布局
android自定义圆角imageView
Android自定义圆角View,支持xml设置圆角半径和背景,支持自动适配大小
RCImageView 自定义圆角ImageView,带边框效果
很好用的一款自定义android自定义FrameLayout布局Demo,可延伸到自定义View,有需要的小伙伴可以下载试下!
自定义圆角动画进度条
Android 自定义圆弧圆角
这是我自己写的圆角dialog,解决android系统自带的dialog太难看的问题
android自定义ImageView,圆角和圆形,抗锯齿.亲测可用。直接拷贝代码就行。
Glide加载圆形图片和自定义圆角图片,可自己设置圆角大小,可以对指定的角进行加载圆角,自定义圆角大小
免费给大家,大家觉得有用 的话,请留下评论。
自定义圆角imageview,可用通过设置属性变成圆形的imageview;也可以显示为一般的圆角view
完整的自定义圆角图片代码,本代码为博客:http://blog.csdn.net/annieliu502/article/details/40615341的源码,有需要代码说明的同学可以查看博客
C#自定义圆角按钮,个性化按钮,直接可以使用。
android RoundAngleImageView 自定义圆角图片 通过自定义View方法。利用PorterDuffXfermode 知识点,实现圆角图片。
本文实例为大家分享了android自定义imageview实现圆角图片的具体代码,供大家参考,具体内容如下 自定义图片的属性,对图片进行圆角切割 实现效果图: (1)在activity_main.xml文件布局,非常简单 <?xml ...
android自定义progressBar颜色,四个角圆度