自定義View標尺

2021-09-25 11:51:08 字數 2026 閱讀 7083

//繪製刻度線

private void drawscale(canvas canvas)else

}}

繪製指示器

@override

protected void ondraw(canvas canvas)

寫觸控的反饋

乙個標準的刻度尺是可以左右滑動的,所以接下來我就為大家詳細的去講解觸控滑動的實現過程。在講解之前我需要先給同學們普及幾個概念:scrollto()、scrollby()和scroller,如果了解的同學可以直接跳過此環節。

在android中view的移動可以通過呼叫自身的scrollto(int x,int y)跟scrollby(int x,int y)進行,兩者的區別是:scrollto(int x,int y)的每一次移動是相對於原始位置進行的。而scrollby(int x,int y)的移動是相對一上一次位置進行的,其實scrollby()內部也是通過scrollto(int x,int y)進行實現的。兩個移動方法都遵循右正左負。

下面我就著重說一下scroller這個類。先回憶乙個場景,viewpager我們大家應該都很熟悉,viewpager在滑動的時候它會自動的、平滑的矯正到相應的位置,這個功能是怎麼實現的呢?答案就是通過scroller。scroller是android為我們提供的乙個專門用於處理滾動效果的工具類,scroller本身是不會使view進行移動的,而是提供了一套演算法,具體的移動還是通過scrollto()和scrollby()進行的。scroller的使用也是非常簡單的,具體可以分為如下幾個步驟:

//1.建立scroller例項

mscroller = new scroller(context);

//2.呼叫startscroll()對滾動操作的設定

//startx和 starty為起始位置,dx和 dy為偏移量

mscroller.startscroll(int startx, int starty, int dx, int dy);

//3.重寫view的computescroll()方法,在其內部結合scroller實現具體的移動操作

@override

public void computescroll()

}

實現view的滾動

//首先我們要重寫ontouchevent()

@override

public boolean ontouchevent(motionevent event)

mlastscale = x;

return true;

case motionevent.action_move:

int dx = mlastscale - x + mscrollx;

scrollto(dx,0);

changescale();

return true;

case motionevent.action_up:

mscrollx = getscrollx();

int transx;

int offsetx = mscalemargin*(mscreenscalecount/2);

if(mscrollx>mwidth-offsetx)else if(getscrollx()<-offsetx)else

mscrollx = getscrollx() - transx;

log.i("zs","在範圍內");

}mscroller.startscroll(getscrollx(),0,-transx,0);

postinvalidate();

return true;

}return super.ontouchevent(event);

}private void changescale()

//低於最小值

else if(mcurrentscalemscrollcallback.setscale(mcurrentscale);

}}

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...

自定義view 二

自定義view的最重要的乙個部分是自定義它的外觀。根據你的程式的需求,通過ondraw方法實現繪製。在ondraw中,會傳遞給你乙個canvas。canvas封裝了繪製圖形的方法。還需要自定義乙個 paint去定義顏色樣式的填充 簡單來說 canvas定義你在螢幕上畫的圖形,而paint定義顏色,樣...