ProgressBar 進度條的進度兩端是圓角的方法

ProgressBar 自定義的時候可能會遇到一個問題,希望進度條中的進度的兩端都是圓角的(或者進度的末端是圓角的);
如下圖:


progress bar rounder

但是根據(jù)自定義的shape 或者是 layer-list卻總是很難做到,幾乎都是被clip成了直角的樣子;


progress bar

;

問題的原因就是如下鏈接中也會有相似的解答:
Android開發(fā)中Progress需要兩邊都是圓角怎么辦?


為什么是直角的?原因就是被clip給切了,所以我們不能夠用clip,而要使用scale這個標(biāo)簽。而上面鏈接給出的解答是定義一個.9的圖片就能滿足要求,由于我們這里是純色的一個進度,所以沒有必要通過再制作一個.9的圖片,而只需要通過同樣的方法引用我們定義的一個shape就可以了;
見代碼:

<ProgressBar    
android:layout_below="@id/text_1"    
android:layout_marginTop="16dp"    
android:layout_width="match_parent"    
android:layout_height="wrap_content"    
android:id="@+id/progressbar_1"   
style="?android:attr/progressBarStyleHorizontal"    
android:max="100"    
android:progress="40"    
android:progressDrawable="@drawable/progress_bar_drawable"    />

progressDrawable 引用的progress_bar_drawable:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">   
     <shape>           
          <corners  android:topRightRadius="20dp"          
            android:bottomRightRadius="20dp" />  
          <solid android:color="#ED30353E"/>        
    </shape>    
   </item>   
   <item android:id="@android:id/secondaryProgress"> 
     <scale android:scaleWidth="100%">            
        <shape>                
            <corners android:topRightRadius="20dp"
               android:bottomRightRadius="20dp"/>
            <solid android:color="#11ce33"/>         
       </shape>        
     </scale>   
   </item>    

  <item android:id="@android:id/progress">  
      <!--       
       <clip>      
       <shape>        
             <corners android:topRightRadius="20dp"  
                  android:bottomRightRadius="20dp"/>   
             <solid android:color="#FF009898"/>      
      </shape>    
      </clip>     
     -->      
  <scale android:scaleWidth="100%"     
       android:drawable="@drawable/progress_bar_ct"   />  
  </item>
</layer-list>

重點就是這個:

<scale android:scaleWidth="100%"     
       android:drawable="@drawable/progress_bar_ct"   />  
 

指定了一個我們自定義的shape:progress_bar_ct.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
 xmlns:android="http://schemas.android.com/apk/res/android"  
  android:shape="rectangle"> 
   <!-- solid指定形狀的填充色,只有android:color一個屬性 -->   
   <solid android:color="#FF009898" />   
   <!-- padding設(shè)置內(nèi)容區(qū)域離邊界的間距 -->    
    <!-- corners設(shè)置圓角,只適用于rectangle -->    
    <corners android:bottomRightRadius="20dp" 
       android:topRightRadius="20dp"/>    
</shape>

這樣就不需要自定義.9的圖片了;
PS:由于本人的需求是右端才是圓角,如果需要4個角都是圓角只需要修改一點代碼即可;

<corners android:bottomRightRadius="20dp" 
       android:topRightRadius="20dp"/> ```

修改成:

<corners android:radius="20dp" />

即可;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,326評論 25 708
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 47,183評論 22 665
  • 這段時間,恩仔都是睡到自然醒。而這個自然醒,是早上九點。今天到幼兒園,都快十點了。在我看來,孩子睡到自然醒是最重要...
    茉莉大大閱讀 208評論 0 0
  • 一個功能的DNA 需求轉(zhuǎn)化-->確定基本屬性-->分析商業(yè)價值-->初評實現(xiàn)難度-->計算性價比用戶需求和產(chǎn)品需求...
    Albert_Mo閱讀 475評論 1 2
  • (一) 筆下字句緩緩流 以為你會懂 走過當(dāng)初有你的街口 沒有了然后 留意你的每一條消息 不盼你記起 路途遙遠,風(fēng)景...
    燕純閱讀 618評論 6 12

友情鏈接更多精彩內(nèi)容