Android 自訂 View 知識點

來源:互聯網
上載者:User

標籤:自己實現   枚舉類型   parse   str   風格   文字   direct   type   dir   

根據 Hencoder 提供的知識點,進行學習和總結。

三個要點:
  1. 布局
  2. 繪製
  3. 觸摸反饋
繪製
  • 自訂繪製:由自己實現繪製過程
  • 常用繪製方法 onDraw(Canvas canvas)
  • 繪製關鍵:
    1. canvas: 繪製工具
      • 繪製類方法
      • drawCircle(): 畫圓
      • drawRect():畫方形
      • drawPath():畫路線
      • drawText():畫文本
      • drawBitmap():畫 bitmap
      • 繪製協助工具輔助
      • 繪製範圍的裁切
      • 繪製內容的幾何變換
    2. paint: 本意顏料,Android中指加強顏料,可設定各種風格,比如是空心還是實心或者是粗細等
    3. 繪製順序:Android 按照順序繪製的。除了 onDraw() 繪製主體部分,還有繪製前景( Forground)和背景( BackGround)
樣本:Paint 常見設定:
  • mPaint.setColor(Color.RED):設定顏色
  • mPaint.setStyle(Style.STROKE):設定繪製模式
  • mPaint.setStrokeWidth(20):設定線條開關
  • mPaint.setAntiAlias(true):設定消除鋸齒
Cancan 繪製類方法繪製顏色
* canvas.drawColor(Color.RED);* canvas.drawColor(Color.parseColor("#00ff00"));* canvas.drawColor(Color.parseColor("#8800ff00"));* canvas.drawRGB(255, 0, 0);* canvas.drawARGB(100, 255, 0, 0);
繪製圓
1. 實心圓:         mPaint = new Paint();        canvas.drawCircle(100, 100, 50, mPaint);2. 空心圓          mPaint.setStyle(Style.STROKE);        canvas.drawCircle(200, 200, 50, mPaint);3. 藍色實心圓        mPaint.setStyle(Style.FILL);        mPaint.setColor(Color.BLUE);        canvas.drawCircle(200, 400, 50, mPaint);4. 線寬為20的空心圓        mPaint.setStyle(Style.STROKE);        mPaint.setStrokeWidth(20);        canvas.drawCircle(400, 200, 50, mPaint);
繪製橢圓
    canvas.drawOval(300, 100, 700, 300, mPaint);
繪製矩形
    canvas.drawRect(250, 500, 700, 800, mPaint);    //    Rect tem1 = new Rect(250, 500, 700, 800);    canvas.drawRect(tem1, mPaint);    //    RectF tem2 = new RectF(250, 500, 700, 800);    canvas.drawRect(tem2, mPaint);
繪製圓角矩形
    RectF t = new RectF(150, 200, 500, 350);    canvas.drawRoundRect(t, 50, 50, mPaint);    //    canvas.drawRoundRect(150, 200, 500, 350, 50, 50, mPaint);
繪製弧形或者扇形
  • drawArc(float left, float top, float right, float bottom, float startAngle,float sweepAngle, boolean useCenter, Paint paint)
    * left,top,right,bottom:弧形所在的橢圓
    * startAngle:弧形的起始角度(x 軸的正向,即正右的方向,0度的位置。順時針為正角度,逆時針為負角度)
    * sweepAngle:弧形划過的角度
    * useCenter:表示十分串連圓心,串連圓心是扇形不串連圓心是弧形

  • 繪製弧形

    canvas.drawArc(200, 600, 800, 1000, 0, 47, false, mPaint);
  • 繪製扇形

    canvas.drawArc(200, 600, 800, 1000, 0, 135, true, mPaint);
  • 樣本:

    mPaint.setAntiAlias(true);mPaint.setStyle(Style.FILL);canvas.drawArc(200, 100, 800, 500, -110, 100, true, mPaint); // 繪製扇形canvas.drawArc(200, 100, 800, 500, 20, 140, false, mPaint); // 繪製弧形mPaint.setStyle(Paint.Style.STROKE); // 畫線模式canvas.drawArc(200, 100, 800, 500, 180, 60, false, mPaint); // 繪製不封口的弧形
畫自訂圖形
  • drawPath(Path path, Paint paint): 通過描述路徑的方式來繪製圖形
  • path: 描述路徑的對象
  • paint:

  • Path
  • 直接描述路徑
    1. addXxx() -- 添加子圖形
    • addCircle(float x, float y, float radius, Direction dir),該方法與 Canvas 的 drawCircle() 一樣的,繪製圓形
      • 描述:添加圓
      • 參數 x 和參數 y :確定圓心
      • 參數 radius: 確定圓的半徑
      • dir: 畫圓路徑的方向,枚舉類型,CW(clockwise)順時針/CCW(counter-clockwise)逆時針
    • addArc():與 Canvas 的 drawArc() 一樣,繪製弧形或者扇形
    • addOval():與 Canvas 的 drawOval() 一樣,繪製橢圓
    • addRect():與 Canvas 的 drawRect() 一樣,繪製矩形
    • addRoundRect():與 Canvas 的 drawRoundRect() 一樣的,繪製圓角矩形
    1. xxxTo()--畫線(直線或者曲線)
    • lineTo():畫直線,從當前位置向目標位置畫一條直線,參數為目標位置 x,y
    • rLineTo(): 與 lineTo() 方法一樣,參數是相對當前位置的相對座標
    • moveTo():移動到目標位置
    • rMoveTo()
    • cubicTo():畫三次貝茲路徑
    • rCubicTo()
    • quadTo():畫二次方貝茲曲線
    • rQuadTo()
    • arcTo: 畫弧形
    1. close():封閉當前子圖形,與 lineTo(起始座標)一樣
  • 輔助的設定或計算
    • setFillType():設定填充方式
    • EVEN_ODD:奇偶原則,交叉填充模式,對於平面的任意一點,向任意方向射出一條射線,這條射線和圖形相交的次數(相交才算,相切不算)如果是奇數,則這個點被認為在圖形內部,是要被塗色的地區;如果是偶數,則這個點被認為在圖形外部,是不被塗色的地區。
    • WINDING (預設值):非零環繞數原則,全填充模式
    • INVERSE_EVEN_ODD
    • INVERSE_WINDING
繪製 Bitmap
  • drawBitmap()
繪製文字
  • drawText()

Android 自訂 View 知識點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.