ProgressBar 進(jìn)度條的進(jìn)度兩端是圓角的方法

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


progress bar rounder

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


progress bar

;

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


為什么是直角的?原因就是被clip給切了,所以我們不能夠用clip,而要使用scale這個(gè)標(biāo)簽。而上面鏈接給出的解答是定義一個(gè).9的圖片就能滿足要求,由于我們這里是純色的一個(gè)進(jìn)度,所以沒有必要通過再制作一個(gè).9的圖片,而只需要通過同樣的方法引用我們定義的一個(gè)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>

重點(diǎn)就是這個(gè):

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

指定了一個(gè)我們自定義的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一個(gè)屬性 -->   
   <solid android:color="#FF009898" />   
   <!-- padding設(shè)置內(nèi)容區(qū)域離邊界的間距 -->    
    <!-- corners設(shè)置圓角,只適用于rectangle -->    
    <corners android:bottomRightRadius="20dp" 
       android:topRightRadius="20dp"/>    
</shape>

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

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

修改成:

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

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

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

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

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