1. 程式人生 > >自定義View入門-繪製基礎(1)

自定義View入門-繪製基礎(1)

前言

說道自定義View,我們一定會想到,自定義View的繪製流程

  • 測量階段(measure)
  • 佈局階段(layout)
  • 繪製階段(draw)

我們看到的一些炫酷的view效果,都是在繪製方法裡去實現的, 也就是draw(Canvas), 我們先放下 測量與佈局, 先從繪製基礎開始學起。

詳解

說到ondraw(Canvas)方法,不得不提PaintCanvas。我們先來看Paint

1.Paint

Paint就是"畫筆",我們先去看下Paint類的原始碼解釋:

**
 * The Paint class holds the style and color information about how to draw
 * geometries, text and bitmaps.
 */

Paint類可以畫幾何圖形,文字與bitmap。 Paint類方法比較多, 這裡拿Paint.Style舉例:

  • Paint.Style.FILL:填充內部
  • Paint.Style.FILL_AND_STROKE :填充內部和描邊
  • Paint.Style.STROKE :描邊
2.Canvas

(1).定義 Canvas就是“畫布”,我們先去看下Canvas類的原始碼解釋:

 * The Canvas class holds the "draw" calls. To draw something, you need
 * 4 basic components: A Bitmap to hold the pixels, a Canvas to host
 * the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect,
 * Path, text, Bitmap), and a paint (to describe the colors and styles for the
 * drawing).
  • 承載畫素的點陣圖
  • 持有繪畫方法呼叫的畫布
  • 描述畫圖顏色和風格的畫筆
  • 畫圖的型別。

(2).繪製方法

方法比較多了,這裡我就隨便舉幾個例子:

  • 畫線
        Paint paint=new Paint();
        paint.setColor(Color.BLUE);
        paint.setStrokeWidth(20);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawLine(200,200,450,200,paint);

  • 畫矩形
        Paint paint=new Paint();
        paint.setColor(Color.BLUE);
        paint.setStrokeWidth(50);
        paint.setStyle(Paint.Style.FILL  );
        canvas.drawRect(100,100,200,200,paint);

  • 畫扇形-140度
        Paint paint=new Paint();
        paint.setColor(Color.BLUE);
        paint.setStrokeWidth(50);
        paint.setStyle(Paint.Style.FILL  );
        canvas.drawArc(100,100,400,400,0,140,false,paint);

更多的方法以及方法的含義可以去下面的API地址去看! API地址

今天就講到這裡 ,繪製基礎還有一個非常重要的類,Paht(路徑)類,下一節講一下。 希望對大家有所幫助!

大家可以關注我的微信公眾號:「秦子帥」一個有質量、有態度的公眾號!

相關推薦

定義View入門-繪製基礎(1)

前言 說道自定義View,我們一定會想到,自定義View的繪製流程 測量階段(measure) 佈局階段(layout) 繪製階

Android定義View——canvas 繪製一個會動的時鐘

文章目錄 ####1、功能例項 用canvas 繪製一個 會動的 指標式 時鐘 ####2、程式碼架構 ####3、主要功能程式碼 activity_main.xml 檔案 <?xml version="1.0" encodin

定義view繪製階段進度progressBar,階段與圖片和文字對齊

  沒用seekbar或者progressbar原生控制元件,通過繪製實現。只講下有用的思想,無關屬性不解釋,也不用看。 主要看onDraw方法程式碼: 繪製背景線,canvas.drawRect線繪製了第一條線,因為需要漸變,可以看到canvas.drawPath是從第

水波紋進度條(定義View——進階篇1

自定義控制元件——ProgressCircleView(水波紋進度條) 最近在很多群都有提到水波紋進度條,看起來蠻唬人的,但是我們要相信毛爺爺的話,一切看起來唬人的都是紙老唬,一言不合,還是先貼效果圖

Android定義View入門---定義一個TextView

自定義一個TextView 本篇作為入門級介紹,以自定義TextView為案例,介紹一下自定義View的流程。自定義View玩的比較溜的小夥伴們可以略過。 簡介 自定義View的型別 自定義View的套路 自定義TextView 原始碼 簡介

定義View學習-繪製一個簡單的圓

想把平時學到的關於自定義View的一些東西記錄下來,從最基本的慢慢往難學吧。這篇是簡單的不能再簡單的繪製,算是一個入門吧。做了兩個,一個是就顯示圓。還有一個是繪製的圓根據手指滑動的位置來移動。並且圓的半徑是動態的,所以這也就導致了你的圓跟著你的手指滑動時,一會大

最易懂的定義View原理系列(1

轉自這裡 前言 自定義View原理是Android開發者必須瞭解的基礎; 在瞭解自定義View之前,你需要有一定的知識儲備; 本文將全面解析關於自定義View中的所有知識基礎。 1. View的分類 檢視View主要分為兩類: 類

分分鐘搞定定義控制元件之組合控制元件--定義View入門

今天給大家詳細講解一下如何實現自定義組合控制元件,組合控制元件其實很簡單。大家可以自由地組合任意控制元件。好了,下面開始我們的正文。 我們要實現的效果如右圖底部所示,其實呢!大家只要把握規律,還是挺容易的。 新建一個attrs.xml屬性集檔案,即你要自定義控制元件的

Android 定義View-怎麼繪製居中文字?

接觸過自定義控制元件的開發者一看,笑了,立馬關了網頁。但是…你真的知道怎麼繪製居中文字嗎? 我不會?開玩笑,不就是:X=控制元件寬度/2 - 文字寬度/2;Y=控制元件高度/2 + 文字寬度/2 好吧,那我試一下。 1.自定義控制元件基本步驟 自定

HenCoder Android 開發進階: 定義 View 1-1 繪製基礎

自定義繪製概述 二話不說,我反手就是一個視訊:(視訊掛了,先直接點到優酷去看吧:優酷連結) 首先總結一下視訊中的關鍵點: 自定義繪製的方式是重寫繪製方法,其中最常用的是 onDraw() 繪製的關鍵是 Canvas 的使用 Canvas 的繪製類方法: drawXX

安卓定義View基礎-繪製點、線、矩形、圓形等

為什麼要自定義View?因為我們在開發中,經常有各種各樣的需求,但是原生的控制元件畢竟只能滿足我們常用的需求,所以我們需要根據自身當前的需求來定製我們的View,話不多說,一步一步來吧。 1.建立類: 建立一個類,暫且將這個類命名為CustomV

Android零基礎入門第24節:定義View簡單使用

子類 protect jin 討論 我們 @+ amp 進階 運行程序 當我們開發中遇到Android原生的組件無法滿足需求時,這時候就應該自定義View來滿足這些特殊的組件需求。 一、概述 很多初入Android開發的程序員,對於Android自定義View可能比較

定義View 繪製一個簡單的時鐘

一.自定義類繼承View 二.思考啊... 算啦,直接上磚頭吧 自定義View介面: public class MyClockView extends View { private Handler handler = new Handler(){ @Overr

Android 定義view1) --- Attr、Style和Theme詳解

轉載:https://www.jianshu.com/p/dd79220b47dd 概念說明:       Attr:屬性,風格樣式的最小單元;      Style:風格,它是一系列Attr的集合用以定義一個View

使用定義View繪製圓形進度條效果

首先自定義屬性 res - values - attrs(自己建立): <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyCicle">

定義View1

點操作:moveTo和lineTo和rLinneTo的理解 1、lineTo 用於進行直線繪製。起點預設為座標原點(左上),如果有path的存在,則是繪製的最後點為基準,座標點對應的(0,0)到lineTo(x,y)的偏移量 比如 /** * 線操作 * lineTo的偏移量相對於原

定義view繪製一個跟隨手指觸控移動的小球

今天我們就來繪製一個能跟隨手指的觸控而移動的小球。其實很簡單,只要我們能夠運用自定義view中的 onTouchEvent方法我們就可以很輕易的做到。 第一步:我們使用自定義view繪製一個小球: private float x ; private float y ;

定義view繪製動態鐘錶

一:準備工作: 今天我們就來學習一下 ,怎麼用自定view繪製鐘錶? 在繪製鐘錶之前,我也看了好多部落格,上面寫的特別複雜,什麼計算公式一大堆,其實並不用這麼麻煩,只要我們瞭解了自定義view裡面的幾個屬性我們就可以用特別簡單的方法來繪製動態鐘錶,下面我們現在介紹一下這幾個屬性:

全程定義view繪製的一個開關器

我們在生活中總會用到一些東西,有一個東西來管理的 那就是開關 下面我們就寫一個自定義view繪製的開關了 下面就直接上程式碼了 public class KaiGuan extends View { boolean flag=true; priv

Android 定義View,繪製一個帶比例的環形進度條

最近專案有一個需求,要在首頁顯示三個環形餅狀圖,要求可以顯示比例大小,中間顯示文字部分,並且需要可以自定義顏色。設計圖如下: 思路: 繪製一個帶百分比的圓環,一共分了四個部分: 1.背景圓(就是底圖圓) 2.預設圓環 3.繪製的圓環(就是比例圓環) 4.中心文字 下面我們開始進行繪製,先準