【Android】刮刮卡实例
16lz
2021-01-23
前言
日常生活中,抽奖是我们都接触过的一项活动,刚开始的时候是实体的刮刮卡。后来智能手机上也能刮一刮了。在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 Sqlite数据库对象模型ORMLite框架学习
- 【Android】Aidl使用详解(支持多个回调和传递自定义对象)
- Android 通过 Intent 传递类对象
- android 3d游戏研究(二)(边学边写,多谢高手指正,鞠躬) :数据库
- Intent传递对象的两种方法(Serializable,Parcelable)
- Android系列之Intent传递对象的两种方法
- Android studio插件GsonFormat,返回json快速创建实体对象