亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android繼承現(xiàn)有控件拓展實現(xiàn)自定義控件textView

 更新時間:2016年04月25日 14:54:04   作者:laozhu1124  
這篇文章主要介紹了Android繼承現(xiàn)有控件拓展實現(xiàn)自定義控件textView的相關(guān)資料,需要的朋友可以參考下

通常情況下,Android實現(xiàn)自定義控件無非三種方式。

  Ⅰ、繼承現(xiàn)有控件,對其控件的功能進行拓展。

 ?、?、將現(xiàn)有控件進行組合,實現(xiàn)功能更加強大控件。

 ?、?、重寫View實現(xiàn)全新的控件

  本文重點討論繼承現(xiàn)有控件進行拓展實現(xiàn)自定義控件。這是一個非常重要的自定義控件的方法,可以站在原生控件這個巨人肩膀上,拓展自身的功能,一般來說,我們可以在ondraw方法中對原生控件進行繪制。

  本文將以拓展textView為例,看我們是如何繼承現(xiàn)有控件,來自定義一個強大控件。這個自定義控件就是帶有邊框文本框,并且邊框與背景的顏色不一樣。大體效果圖是這樣的:

  我們來分析一下如何實現(xiàn)這樣的效果。我們此時應(yīng)當(dāng)盯上OnDraw方法,重寫OnDraw方法,在OnDraw方法中分別畫兩個有帶顏色背景矩形邊框就可以了。這樣,文本框就會有錯落有致的層次感了。

  要有這種錯落有致的效果,我們第一步要做的是定義畫內(nèi)邊框和外邊框的畫筆,定義的代碼如下:

private void initView() {
    mPaint1 = new Paint();
    mPaint1.setColor(Color.BLUE);
    mPaint1.setStyle(Style.FILL);

    mPaint2 = new Paint();
    mPaint2.setColor(Color.YELLOW);
    mPaint2.setStyle(Style.FILL);
  }

  我們定義了第一種畫筆顏色為藍(lán)色,畫筆的填充模式為完全填充。第二種畫筆顏色為黃色,同樣填充模式為完全填充。

  有了不同顏色畫筆之后,我們所需要做的是在OnDraw方法運用這兩只畫筆畫不同矩形,這樣代碼又是這樣:

canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint1);
    canvas.drawRect(10, 10, getMeasuredWidth() - 10,
        getMeasuredHeight() - 10, mPaint2);
    canvas.save();
    canvas.translate(10, 0);
    super.onDraw(canvas);
    canvas.restore();

  我們畫了兩個長寬不等的矩形,并且畫布平移了10個單位。這樣畫出來的自定義控件為:

  這個例子,非常簡單,可能大家對繼承原生控件還是意猶未盡的話,我們百尺竿頭更進一步。做個稍微復(fù)雜點自定義TextView——帶有閃爍文字的TextView。

  我們分析一下實現(xiàn)的思路:

 ?、僖獙崿F(xiàn)這個效果,我們可以充分利用paint對象的shader(渲染器)對象。

 ?、谕ㄟ^不斷改變linearGradient的位置,來形成這閃爍的效果。

  有了這樣的思路以后,我們首先在onSizeChanged方法初始化LinearGradient對象,和進行圖形變換的矩陣對象。源代碼如下:

if (mWidth == 0) {
      mWidth = getMeasuredWidth();
      if (mWidth > 0) {
        mPaint = getPaint();
        mLinearGradient = new LinearGradient(0, 0, mWidth, 0,
            new int[] { Color.GRAY, Color.GREEN, Color.GRAY }, null,
            Shader.TileMode.CLAMP);
        mPaint.setShader(mLinearGradient);
        matrix = new Matrix();
      }
    }

   我們將LinearGradient對象顏色設(shè)置為灰綠相間的線性漸變對象,顏色的平鋪模式為平鋪。

  然后在onDraw方法中,不斷變換線性漸變對象的位置,從而就有了文字左右閃爍的效果。源代碼如下:

if (matrix != null) {
      mTranslate = mTranslate + mWidth / 5;
      if (mTranslate > 2 * mWidth) {
        mTranslate = -mWidth;
      }
      matrix.setTranslate(mTranslate, 0);
      mLinearGradient.setLocalMatrix(matrix);
      postInvalidateDelayed(100);

    }

  最終形成的效果為:

  這就是自定義View三板斧之一——繼承現(xiàn)有控件一點總結(jié),希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 深入解讀Android的Volley庫的功能結(jié)構(gòu)

    深入解讀Android的Volley庫的功能結(jié)構(gòu)

    這篇文章主要介紹了Android的Volley開發(fā)框架的功能結(jié)構(gòu),Volley是Android開發(fā)中網(wǎng)絡(luò)部分的一大利器,包含很多HTTP協(xié)議通信的相關(guān)操作,需要的朋友可以參考下
    2016-05-05
  • Android應(yīng)用中使用ContentProvider掃描本地圖片并顯示

    Android應(yīng)用中使用ContentProvider掃描本地圖片并顯示

    這篇文章主要介紹了Android應(yīng)用中使用ContentProvider掃描本地圖片并顯示的方法,比調(diào)用本地圖庫的方法更加靈活和可定制,需要的朋友可以參考下
    2016-04-04
  • Android 給圖片加上水印的示例代碼(支持logo+文字)

    Android 給圖片加上水印的示例代碼(支持logo+文字)

    本篇文章主要介紹了Android 給圖片加上水印的示例代碼(支持logo+文字),具有一定的參考價值,有興趣的可以了解一下
    2017-08-08
  • Android自定義控制條效果

    Android自定義控制條效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控制條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 超實用的android自定義log日志輸出工具類

    超實用的android自定義log日志輸出工具類

    這篇文章主要為大家詳細(xì)介紹了一個超實用的android自定義log日志輸出工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android 設(shè)置Edittext獲取焦點并彈出軟鍵盤

    Android 設(shè)置Edittext獲取焦點并彈出軟鍵盤

    本文主要介紹了Android設(shè)置Edittext獲取焦點并彈出軟鍵盤的實現(xiàn)代碼。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Android自定義帶圓角的ImageView

    Android自定義帶圓角的ImageView

    這篇文章主要為大家詳細(xì)介紹了Android自定義帶圓角的ImageView,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Android性能優(yōu)化之Bitmap圖片優(yōu)化詳解

    Android性能優(yōu)化之Bitmap圖片優(yōu)化詳解

    在Android項目的imageview中使用大圖bitmap時會占據(jù)很大的內(nèi)存,而且在很多時候我們并不需要顯示原圖那么大的圖片, 所以我們需要對圖片進行優(yōu)化,這篇文章主要介紹了Android性能優(yōu)化之Bitmap圖片優(yōu)化的相關(guān)資料,需要的朋友們下面來一起看看吧。
    2017-04-04
  • Android編程之通知欄的用法小結(jié)

    Android編程之通知欄的用法小結(jié)

    這篇文章主要介紹了Android編程之通知欄的用法,結(jié)合實例形式總結(jié)分析了Android通知欄的相關(guān)操作技巧,包括發(fā)送、刪除通知、自定義布局等操作實現(xiàn)方法,需要的朋友可以參考下
    2017-01-01
  • Android TextView預(yù)渲染研究

    Android TextView預(yù)渲染研究

    這篇文章主要介紹了Android TextView預(yù)渲染研究的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評論