您的位置:首页 > 移动开发 > Android开发

【Android】刮刮卡实例

2016-06-10 21:36 423 查看
前言

日常生活中,抽奖是我们都接触过的一项活动,刚开始的时候是实体的刮刮卡。后来智能手机上也能刮一刮了。在Android系统要实现刮刮卡的效果,需要用到Bitmap/Matrix/Canvas等类。下面展示代码和效果图。

刮刮卡布局文件的代码:

<span style="font-size:18px;"><TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="二等奖"
android:textSize="40dp"
android:textColor="@android:color/holo_purple" />

<ImageView
android:id="@+id/imgv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"</span>
<span style="font-size:18px;">android:layout_centerVertical="true"  /></span>


刮刮卡中MainActivity中代码:

public class MainActivity extends Activity {<span style="font-size:18px;">
private ImageView mImageView;
private Bitmap alterbitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imgv);  //从界面获取ImageView控件
//从资源文件中解析一张bitmap
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.k_t);
alterbitmap = Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(),bitmap.getConfig());
//创建一个canvas对象
Canvas canvas = new Canvas(alterbitmap);
//创建画笔对象
Paint paint = new Paint();
//为画笔设置颜色
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
//创建Matrix对象
Matrix matrix = new Matrix();
//在alterbitmap上画图
canvas.drawBitmap(bitmap, matrix, paint);
//设置ImageView的背景
mImageView.setImageBitmap(alterbitmap);
//为ImageView设置监听
mImageView.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
try {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Toast.makeText(MainActivity.this, "手指触下", 0).show();
break;
case MotionEvent.ACTION_MOVE:
Toast.makeText(MainActivity.this,"手指移动("+event.getX()+","+event.getY()+")",0).show();
int x = (int) event.getX();
int y = (int) event.getY();
for (int i= -10;i<10;i++){
for(int j=-10;j<10;j++){
//将区域类的像素点设为透明像素
if (Math.sqrt((i*i)+(j*j))<=10){
alterbitmap.setPixel(x+i, y+j,Color.TRANSPARENT);
}
}
}
mImageView.setImageBitmap(alterbitmap);
break;
case MotionEvent.ACTION_UP:
Toast.makeText(MainActivity.this, "手指松开", 0).show();
break;
}
} catch (Exception e){
e.printStackTrace();
}
return true;   //消费掉该触摸事件
}
});

}</span>


刮刮卡的效果图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: