安卓開發之刮刮樂執行個體教程

來源:互聯網
上載者:User

標籤: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, 00null);     mCanvas.drawPath(path, paint);     super.onDraw(canvas);}

源碼下載:點擊下載

安卓開發之刮刮樂執行個體教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.