【Android】刮刮卡实例

前言


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


刮刮卡布局文件的代码:


    
    
          android:layout_centerVertical="true"  />

刮刮卡中MainActivity中代码:

public class MainActivity extends Activity {
	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;   //消费掉该触摸事件
			}
		});
		
	}

刮刮卡的效果图:


            【Android】刮刮卡实例_第1张图片【Android】刮刮卡实例_第2张图片


你可能感兴趣的:(Android)