支付寶刮獎案例
阿新 • • 發佈:2019-01-23
撕衣服小案例
① 準備一個佈局檔案,佈局中有兩個ImageView,第一個ImgView是用來作為背景存在的,無法進行修改,第二個ImageView是用來作為被塗抹的部分存在的,可以被進行修改
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:gravity="center" tools:context="com.example.it.MainActivity"> <ImageView android:background="@drawable/back" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/iv_show" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
② 初始化控制元件
iv_show = (ImageView) findViewById(R.id.iv_show);
③ 建立一個副本圖片,主要用在作為被修改的物件
//建立圖片副本 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.front); copybm = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); Canvas canvas = new Canvas(copybm); canvas.drawBitmap(bitmap,new Matrix(),null); iv_show.setImageBitmap(copybm);
④ 設定點選事件,對點選進行相關操作
//設定觸控監聽事件 iv_show.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //獲取時間型別 int action = event.getAction(); switch (action){ case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: //獲取移動位置的座標 try { float x = event.getX(); float y = event.getY(); //吧移動的軌跡變為透明,並且透明的範圍為圓形 for (int i = -10 ;i <=10;i++){ for (int j = -10;j<=10;j++ ){ if (Math.sqrt(i*i+j*j)<=10){ copybm.setPixel((int)x+i,(int)y+j, Color.TRANSPARENT); } } } } catch (IllegalArgumentException e) { e.printStackTrace(); } break; } iv_show.setImageBitmap(copybm); return true; } });