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

Android中通過反射實現(xiàn)圓角ImageView代碼實例

 更新時間:2015年04月24日 11:28:12   投稿:junjie  
這篇文章主要介紹了Android中通過反射實現(xiàn)圓角ImageView代碼實例,本文直接給出核心實現(xiàn)代碼,需要的朋友可以參考下
private void init(){
    paint = new Paint(Paint.ANTI_ALIAS_FLAG);    
    roundRect = new RectF(0, 0, getWidth() , getHeight());
    radius = 40;
    mPorterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN) ;
  }

繼承ImageView,在構(gòu)造方法中調(diào)用,初始化Paint和Xfermode。

 protected void onDraw(Canvas canvas) {    
    int sc = canvas.saveLayer(0, 0, getWidth() , getHeight(), null,
        Canvas.MATRIX_SAVE_FLAG |
        Canvas.CLIP_SAVE_FLAG |
        Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
        Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
        Canvas.CLIP_TO_LAYER_SAVE_FLAG);    
    roundRect.set(0, 0, getWidth(), getHeight());
    canvas.drawRoundRect(roundRect, radius, radius, paint);    
    reflectSetXfermod();    
    super.onDraw(canvas);    
    canvas.restoreToCount(sc);
  }

重寫ImageView的onDraw方法,通過xfermode實現(xiàn)圓角

private void reflectSetXfermod(){
    Drawable drawable = getDrawable();
    if(drawable == null){
      return;
    }    
    
    Class bsClass = null;
    Class[] innerClasses = BitmapDrawable.class.getDeclaredClasses();
    for(Class innerClass :innerClasses)
    {
      String name = innerClass.getName();
      System.out.println("-----innerClass---"+name);
      if(name.equals("android.graphics.drawable.BitmapDrawable$BitmapState"))
      {
        bsClass = innerClass;
      }      
    }
    
    if(bsClass!= null){      
      try {
        Field mPaintField = bsClass.getDeclaredField("mPaint");
        mPaintField.setAccessible(true);
        ConstantState constantState = ((BitmapDrawable)drawable).getConstantState();
        Paint paint = (Paint)mPaintField.get(constantState);
        paint.setXfermode(mPorterDuffXfermode);
      } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      } catch (NoSuchFieldException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }
  }

通過反射的方法將xfermode設(shè)置到BitmapDrawable 里面的內(nèi)部類BitmapState里的對象mPaint,用來繪制圖片。

相關(guān)文章

  • 如何為RecyclerView添加分隔線

    如何為RecyclerView添加分隔線

    這篇文章主要為大家詳細介紹了如何為RecyclerView添加分隔線,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android View 事件防抖的兩種方案

    Android View 事件防抖的兩種方案

    這篇文章主要介紹了Android View 事件防抖的兩種方案,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下
    2021-04-04
  • Android TabLayout(選項卡布局)簡單用法實例分析

    Android TabLayout(選項卡布局)簡單用法實例分析

    這篇文章主要介紹了Android TabLayout(選項卡布局)簡單用法,結(jié)合實例形式簡單分析了Android選項卡布局的界面布局與功能實現(xiàn)具體相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • Kotlin Flow常見場景下的使用實例

    Kotlin Flow常見場景下的使用實例

    這篇文章主要為大家介紹了Kotlin Flow常見場景下的使用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Android shell命令行中過濾adb logcat輸出的方法

    Android shell命令行中過濾adb logcat輸出的方法

    本文主要介紹Android shell命令行中過濾adb logcat輸出,這里詳細說明了shell 命令過濾logcat 輸出內(nèi)容,有需要的小伙伴可以參考下
    2016-08-08
  • Android實現(xiàn)圓形純數(shù)字按鈕

    Android實現(xiàn)圓形純數(shù)字按鈕

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圓形純數(shù)字按鈕,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Android實現(xiàn)Flip翻轉(zhuǎn)動畫效果

    Android實現(xiàn)Flip翻轉(zhuǎn)動畫效果

    這篇文章主要介紹了Android實現(xiàn)Flip翻轉(zhuǎn)動畫效果,對Android程序設(shè)計人員有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • Android開發(fā)listview選中高亮簡單實現(xiàn)代碼分享

    Android開發(fā)listview選中高亮簡單實現(xiàn)代碼分享

    這篇文章主要介紹了Android開發(fā)listview選中高亮簡單實現(xiàn)代碼分享,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Kotlin學習筆記之const val與val

    Kotlin學習筆記之const val與val

    這篇文章主要給大家介紹了關(guān)于Kotlin學習筆記之const val與val的相關(guān)資料,并給大家介紹了const val和val區(qū)別以及Kotlin中var和val的區(qū)別,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-05-05
  • android編程實現(xiàn)添加文本內(nèi)容到sqlite表中的方法

    android編程實現(xiàn)添加文本內(nèi)容到sqlite表中的方法

    這篇文章主要介紹了android編程實現(xiàn)添加文本內(nèi)容到sqlite表中的方法,結(jié)合實例較為詳細的分析了Android針對txt文本文件的讀取及SQL數(shù)據(jù)庫操作的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11

最新評論