一、建立自定義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的自定義?自定義...