自定義 view,實現刮獎

2021-07-24 01:11:45 字數 2971 閱讀 7731

一、建立自定義view類:

public

class

myview

extends

view

public

myview(context context, attributeset attrs)

public

myview(context context, attributeset attrs, int defstyleattr)

@override

protected

void

ondraw(canvas canvas)

canvas.drawbitmap(bitmap,0,0,null); //1.在這塊畫布上把bitmap新增

mcanvas.drawpath(path,paint);

}public

void

init()

@override

public

boolean

ontouchevent(motionevent event)

invalidate();

return

true;

}public bitmap createbitmap(int color, int width, int height)

return bitmap.createbitmap(colors,width,height, bitmap.config.argb_8888);}}

幾個注意的地方:

1.**中porterduff.mode.clear的幾種模式:

2.ontouchevent中重新整理圖層,並返回true

從上面我們可以看到porterduff.mode為列舉類,一共有16個列舉值:

1.porterduff.mode.clear

所繪製不會提交到畫布上。

2.porterduff.mode.src

顯示上層繪製

3.porterduff.mode.dst

顯示下層繪製

4.porterduff.mode.src_over

正常繪製顯示,上下層繪製疊蓋。

5.porterduff.mode.dst_over

上下層都顯示。下層居上顯示。

6.porterduff.mode.src_in

取兩層繪製交集。顯示上層。

7.porterduff.mode.dst_in

取兩層繪製交集。顯示下層。

8.porterduff.mode.src_out

取上層繪製非交集部分。

9.porterduff.mode.dst_out

取下層繪製非交集部分。

10.porterduff.mode.src_atop

取下層非交集部分與上層交集部分

11.porterduff.mode.dst_atop

取上層非交集部分與下層交集部分

12.porterduff.mode.xor

異或:去除兩圖層交集部分

13.porterduff.mode.darken

取兩圖層全部區域,交集部分顏色加深

14.porterduff.mode.lighten

取兩圖層全部,點亮交集部分顏色

15.porterduff.mode.multiply

取兩圖層交集部分疊加後顏色

16.porterduff.mode.screen

取兩圖層全部區域,交集部分變為透明色

二、布局檔案採用相對布局,讓你要顯示的內容和myview處於用乙個位置:

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

xmlns:tools=""

android:id="@+id/activity_main2"

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"

tools:context="com.chao.peixun4.main2activity">

android:layout_width="200dp"

android:layout_height="100dp"

android:text="恭喜您中獎了!"

android:textsize="26sp"

android:textcolor="#ff0000"

android:layout_alignparenttop="true"

android:layout_alignparentleft="true"

android:layout_alignparentstart="true" />

android:layout_width="200dp"

android:layout_height="100dp"

android:layout_alignparenttop="true"

android:layout_alignparentleft="true"

android:layout_alignparentstart="true"/>

relativelayout>

自定義view實現刮獎的效果

首先我們要明白,為什麼要自定義view?主要是android系統內建的view無法實現我們的需求,我們需要針對我們的業務需求定製我們想要的view。自定義view我們大部分時候只需重寫兩個函式 onmeasure ondraw onmeasure負責對當前view的尺寸進行測量,ondraw負責把當...

Android自定義View實現

android自定義view實現很簡單 繼承view或者其子類,重寫建構函式 ondraw,onmeasure 等函式,根據繼承的類的不同可能有所不同。如果自定義的view需要有自定義的屬性,需要在values下建立attrs.xml。在其中定義你的屬性。在使用到自定義view的xml布局檔案中需要...

自定義View的實現

自定義view分為三種型別 0 繼承現有的ui控制項 實現特定功能,例如事件攔截,就像是我的slidingpanelayout和viewpager結合 自定義view 0 繼承現有的控制項 1 將多個控制項進行組合,形成新的自定義view radio動態指示器,radiobutton的自定義?自定義...