標籤:android style http color io java ar 2014 div
刮獎在生活中常常見到,網上現在也有各種各樣的抽獎活動,下面我們就要實現一個刮刮樂程式,可以完美滿足 大家的虛榮心,哈哈,下面就開始吧,100%中獎的喔!
下面先來看看:
讓我們來看看它的布局:
| 1234567891011121314151617181920212223 |
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="300dp" android:layout_height="150dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@android:color/holo_red_dark" android:gravity="center" android:text="恭喜你,中獎啦!" android:textSize="35dp" /> <net.androidchina.example.guale.EraseView android:id="@+id/eraseView1" android:layout_width="300dp" android:layout_height="150dp" android:layout_centerHorizontal="true" android:layout_centerInParent="true" android:layout_centerVertical="true" /> </RelativeLayout> |
布局很簡單,通過相對布局,將文字和view重疊到一起,重點是EraseView這個類的實現,下面一起看看這個類的代碼:
首先我們要定義一個畫布以及畫筆
| 12345678910 |
paint = new Paint();paint.setStyle(Paint.Style.STROKE);paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));paint.setAntiAlias(true);paint.setDither(true);paint.setStrokeJoin(Paint.Join.ROUND);paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeWidth(30); mCanvas = new Canvas(bitmap); |
當手指觸控螢幕幕時,需要觸發滑動事件:
| 12345678910111213141516171819 |
@Overridepublic boolean onTouchEvent(MotionEvent event) { float ax = event.getX(); float ay = event.getY(); if (event.getAction() == MotionEvent.ACTION_DOWN) { isMove = false; path.reset(); path.moveTo(ax, ay); invalidate(); return true; } else if (event.getAction() == MotionEvent.ACTION_MOVE) { isMove = true; path.lineTo(ax, ay); invalidate(); return true; } return super.onTouchEvent(event);} |
這裡需要一個path來記錄軌跡,並且需要調用invalidate();來對畫布進行重畫,會進一步調用onDraw方法:
| 12345678910 |
@Overrideprotected void onDraw(Canvas canvas) { if (mCanvas == null) { EraseBitmp(); } canvas.drawBitmap(bitmap, 0, 0, null); mCanvas.drawPath(path, paint); super.onDraw(canvas);} |
源碼下載:點擊下載
安卓開發之刮刮樂執行個體教程