国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    1. <label id="iqqfh"></label>
      ????? ?? ??? / Paint幾個枚舉/常量值以及ShadowLayer陰影效果

      Paint幾個枚舉/常量值以及ShadowLayer陰影效果

      本節(jié)引言:

      Android基礎(chǔ)入門教程——8.3.1 三個繪圖工具類詳解Paint的方法參數(shù)那里我們就接觸到 了這樣幾個東西:Paint.Style,Paint.Cap,Paint.Join等,這些都是Paint中的一些枚舉值,相關(guān) 方法我們可以通過設(shè)置這些枚舉值來設(shè)置特定效果比如:Style:畫筆樣式,Join圖形結(jié)合方式等, 本節(jié)我們走進Paint的源碼,我們來一一介紹這些枚舉值,另外我們也順道講下這個ShadowLayer 設(shè)置帶陰影效果的Paint!打開Paint類的源碼,我們可以看到下述這些枚舉值:

      1.png
      好了,不BB,開始本節(jié)內(nèi)容!

      1.get枚舉用法:

      不知大家對枚舉陌生還是熟悉,這里把貼下Paint.Style相關(guān)的調(diào)用代碼(帶有參構(gòu)造方法的枚舉) ,讓大家體會體會:

      public enum Style {
          //定義枚舉,通過括號賦值
          FILL            (0),
          STROKE          (1),
          FILL_AND_STROKE (2);
          //有參構(gòu)造方法
          Style(int nativeInt) {
              this.nativeInt = nativeInt;
          }
          final int nativeInt;
      }
      //設(shè)置畫筆Style的方法
      public void setStyle(Style style) {
          native_setStyle(mNativePaint, style.nativeInt);
      }
      //JNI設(shè)置畫筆風(fēng)格的方法,這里我們無需關(guān)注
      private static native void native_setStyle(long native_object, int style);

      下面我們一一來解釋這些枚舉值的作用!


      1.Paint.Style

      作用:畫筆的樣式 可選值:

      • FILL:填充內(nèi)部(默認)
      • STROKE:只描邊
      • FILL_AND_STROKE:填充內(nèi)部與描邊

      方法調(diào)用:setStyle(Paint.Style style)對應(yīng)效果:

      2.png

      2.Paint.Cap

      作用:筆觸風(fēng)格,設(shè)置畫筆始末端的圖形(畫筆開始畫的第一點與最后一點) 可選值:

      • BUTT:筆觸是長方形且不超過路徑(默認)
      • ROUND:筆觸是圓形
      • SQUARE:筆觸是正方形

      方法調(diào)用:setStrokeCap(Paint.Cap cap)

      對應(yīng)效果:平時我們直接畫的是第一個,其他兩個會比普通的多一點而外的區(qū)域,第二個 是圓角,第三個是矩形!

      3.png

      3.Paint.Join

      作用:設(shè)置接合處的狀態(tài),比如你的線是由多條小線拼接而成,拼接處的形狀 可選值:

      • MITER:接合處為銳角(默認)
      • ROUND:接合處為圓弧
      • BEVEL:接合處為直線

      方法調(diào)用:setStrokeJoin(Paint.Join join)

      一般圓弧用得多,可參見之前的擦掉美女衣服Demo的顯示

      另外還有個setStrokeMiter(float miter)是設(shè)置筆畫的傾斜度,miter > = 0; 如:小時候用的鉛筆,削的時候斜與垂直削出來的筆尖效果是不一樣的。 主要是用來設(shè)置筆觸的連接處的樣式??梢院蛃etStrokeJoin()來比較比較。


      4.Paint.Align

      作用:設(shè)置繪制文本的對其方式,就是相對于繪制文字的[x,y]起始坐標(biāo) 可選值:

      • LEFT:在起始坐標(biāo)的左邊繪制文本
      • RIGHT:在起始坐標(biāo)的右邊繪制文本
      • CENTER:以其實坐標(biāo)為中心繪制文本

      方法調(diào)用:setTextAlign(Paint.Align align)

      對應(yīng)效果:另外可調(diào)用setTextSize()設(shè)置繪制文本的大小~

      4.png

      5.Paint.FontMetrics和Paint.FontMetricsInt

      字體屬性及測量,另外這兩個方法是一樣的,只是后者取到的值是一個整形, 這里我們選FontMetricsInt來給大家講解下,有下面這五個常量值,這里參考的基準點是: 下劃線的位置(Baseline)

      • top:最高字符到baseline的距離,即ascent的最大值
      • ascent:字符最高處的距離到baseline的值
      • descent:下劃線到字符最低處的距離
      • bottom:下劃線到最低字符的距離,即descent的最大值
      • leading:上一行字符的descent到下一行的ascent之間的距離

      我們看幾個圖幫助理解下:

      5.png
      6.gif
      7.png
      然后我們隨意畫一串字母,把這些值打印出來:canvas.drawText("abcdefghijklnmopqrstuvwxyz", 400, 400, mPaint1);

      Log.e("HEHE", mPaint1.getFontMetricsInt().toString());
      運行下,我們可以看到,打印出來的Log如下:

      8.png

      看完思考思考,畫一畫,應(yīng)該不難理解!這里我們知道下就好,如果你想更 深入研究,可以參考下這篇:Android字符串進階之三:字體屬性及測量(FontMetrics)


      6.ShadowLayer設(shè)置陰影效果

      我們在TextView那一節(jié)就教過大家為TextView的文本設(shè)置陰影效果,而Paint其實也提供了設(shè)置 陰影效果的API:setShadowLayer(float radius, float dx, float dy, int shadowColor)

      參數(shù):radius為陰影的角度,dx和dy為陰影在x軸和y軸上的距離,shadowColor為陰影的顏色 我們可以寫個非常簡單的句子驗證下:

      mPaint1.setShadowLayer(5,0,0,Color.BLACK);
      canvas.drawText("畢竟基神~", 400, 400, mPaint1);    //繪制文字

      效果如下

      9.png

      另外我們還可以調(diào)用clearShadowLayer()來清除這個陰影層~


      本節(jié)小結(jié):

      好的,本節(jié)給大家講解了下Paint里面的幾個枚舉值以及靜態(tài)常量,以及ShadowLayer為畫筆 設(shè)置陰影效果或調(diào)用clearShadowLayer()清除陰影層~其實這些東西都可以自己去看源碼以及 文檔,有疑惑就動手寫個Demo,很多東西就自然一清二楚的了,嗯,就說這么多,謝謝~10.gif