前言


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


刮刮卡布局文件的代码:

                  android:layout_centerVertical="true"  />

刮刮卡中MainActivity中代码:

public class MainActivity extends Activity {private ImageView mImageView;private Bitmap alterbitmap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mImageView = (ImageView) findViewById(R.id.imgv);  //从界面获取ImageView控件//从资源文件中解析一张bitmapBitmap 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() {@Overridepublic 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张图片


更多相关文章

  1. android Sqlite数据库对象模型ORMLite框架学习
  2. 【Android】Aidl使用详解(支持多个回调和传递自定义对象)
  3. Android 通过 Intent 传递类对象
  4. android 3d游戏研究(二)(边学边写,多谢高手指正,鞠躬) :数据库
  5. Intent传递对象的两种方法(Serializable,Parcelable)
  6. Android系列之Intent传递对象的两种方法
  7. Android studio插件GsonFormat,返回json快速创建实体对象

随机推荐

  1. android AutoCompleteTextView 的 setAda
  2. Android(安卓)MaterialSheetFab
  3. android studio toolbar 简单使用变换样
  4. Android(安卓)获取系统信息 手机号码 所
  5. Android(安卓)invalidate
  6. cocos2dx android版本移植时的Error form
  7. 【转】Android(安卓)重要组件 之 Intent(
  8. Android(安卓)Studio 实现九宫格
  9. GPS 研究(Android2.3)
  10. Android(安卓)代码修改按钮上的图片