Android 自定義view 小細節處理

2021-07-25 06:47:04 字數 1485 閱讀 4059

俗話說的好:好記性不如爛筆頭啊。的確如此,在這麼多年的開發中,有些東西一直記,有些東西也在一直忘。需要反覆的去看,去理解。但是當你會過頭來的時候,會發現,你又會對以前的東西有些認知,不僅會帶你回憶當時為什麼會這樣想的,而且,還會對你現在的思維架構產生影響,所以很多人寫部落格,不光是為了給別人分享,而且還有對自己的共勉,小弟不才,文章寫的不好,有些思維邏輯性跳躍大的話,還請見諒。

android中自定義view,一般都是重寫幾個重要的方法,比如:

今天咱們說一下在ondraw 中的一些細節。

在ondraw 一開始的時候,整個螢幕都是畫布,而且在最左上方,是畫布的乙個原點,座標為(0,0),向右是x軸,為正軸,向下是y軸,為正軸,如果此時呼叫了canvas.traslate(x,y)方法,是移動的畫布的乙個座標系,並不是移動的整個畫布,舉乙個例子:我在畫布上畫了個弧度,然後此時呼叫canvas.traslate(x,y)方法,原來弧度的位置是不會再變了,下次畫筆的起始位置就是移動後的位置,看圖說話。

移動之前的位置
然後我修改了** 在畫完內圓的時候,移動了畫布的座標系,xy分別為10

移動之後的位置
所以總結

畫布移動的是座標系。可以參考下canvas變換與操作

講的比較亂,既然說了移動的是座標系,那咱們再來說下座標系的問題。

這個主要體現在畫弧度的時候
rectf rectf =

new rectf(-radius, -radius, radius, radius);

//畫弧度

canvas.drawarc(rectf, startangle, sweepangle, false, paint);

startangle 起始角度,sweepangle 是掃過的簡單,sweepangle>0的話為順時針旋轉,小於0為逆時針旋轉。大家估計要問了 0度在哪個位置?我這不會畫圖 就口述吧。0度的位置其實和數學系中的座標一樣的,只不過
在常見的數學座標系中角度增大方向為逆時針,

在預設的螢幕座標系中角度增大方向為順時針

參考文章安卓自定義view基礎-角度與弧度

這一篇寫的不錯,專門介紹了角度和弧度之間的關係

先寫到這裡吧,謝謝 !

這才發現原來寫部落格是件不容易的問題啊。

Android自定義View 自定義元件

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

Android自定義View實現

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

Android 自定義View 一

android的ui介面都是由view和viewgroup及其派生類組合而成的。其中,view是所有ui元件的基類,而viewgroup是容納這些元件的容器,其本身也是從view派生出來的。androidui介面的一般結構可參見下面的示意圖 可見,作為容器的viewgroup可以包含作為葉子節點的v...