最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Android圓形進(jìn)度條ProgressBar如何實(shí)現(xiàn)固定進(jìn)度

 更新時(shí)間:2024年03月20日 08:49:13   作者:Stars-one  
之前遇到一個(gè)問(wèn)題,發(fā)現(xiàn)Android里的圓形進(jìn)度條無(wú)法固定一個(gè)進(jìn)度,所以這篇文章就來(lái)和大家探索一下圓形進(jìn)度條ProgressBar如何實(shí)現(xiàn)固定進(jìn)度,希望對(duì)大家有所幫助

探究

假設(shè)我們?cè)趚ml中這樣寫:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".page.home.HomeFragment">

    <ProgressBar
        android:indeterminate="false"
        android:id="@+id/pbStorage"
        android:progress="60"
        android:max="100"
        android:layout_width="100dp"
        android:layout_height="100dp"/>

</FrameLayout>

按照預(yù)料的,上面的我們的進(jìn)度條應(yīng)該是圓形,且設(shè)置indeterminate屬性,應(yīng)該是固定了進(jìn)度,但實(shí)際效果如下:

進(jìn)度條是一直在轉(zhuǎn)動(dòng)的

之后通過(guò)翻閱官方的文檔發(fā)現(xiàn),ProgressBar雖然提供了一個(gè)圓形和水平進(jìn)度條的樣式,但是圓形的樣式它不支持確定進(jìn)度

我們可以打開(kāi)其內(nèi)置的theme來(lái)找到答案,如下的2個(gè)截圖

解決

那么我們應(yīng)該如何解決?很簡(jiǎn)單,我們可以從參考上面的水平進(jìn)度條,設(shè)置對(duì)應(yīng)的drawable屬性即可解決

  • progressDrawable:用于設(shè)置 ProgressBar的進(jìn)度條樣式??梢酝ㄟ^(guò)指定一個(gè)drawable資源來(lái)定義進(jìn)度條的外觀。通常用于顯示確定的進(jìn)度,即進(jìn)度會(huì)從0%到100%之間變化。
  • indeterminateDrawable:用于設(shè)置 ProgressBar在不確定進(jìn)度時(shí)的樣式。當(dāng) ProgressBar處于不確定進(jìn)度(indeterminate)時(shí),進(jìn)度條會(huì)顯示一個(gè)循環(huán)動(dòng)畫,而不是固定的進(jìn)度。通過(guò)指定一個(gè)drawable資源,可以定義不確定進(jìn)度時(shí)的樣式。

當(dāng)我們?cè)O(shè)置Progressbar的 indeterminate屬性的時(shí)候?yàn)閠rue,則ProgressBar使用 indeterminateDrawable這個(gè)外觀,否則則使用 progressDrawable這個(gè)外觀

于是我們可以自定義一個(gè)圓形的外觀drawable,名為 progress_bar_green.xml(放在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
            android:innerRadiusRatio="3.5"
            android:shape="ring"
            android:useLevel="false"
            android:type="sweep"
            android:thicknessRatio="12.0">
            <!--    進(jìn)度條默認(rèn)底色        -->
            <solid android:color="#f2f2f2"/>
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <rotate
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromDegrees="-90"
            android:toDegrees="-90">
            <shape
                android:innerRadiusRatio="3.5"
                android:shape="ring"
                android:angle="0"
                android:type="sweep"
                android:thicknessRatio="12.0">
                <!--    進(jìn)度條顏色            -->
                <solid android:color="#33cf59"/>
            </shape>
        </rotate>
    </item>
</layer-list>

PS: 如果想要進(jìn)度條的圓環(huán)寬度變小,可以將 thicknessRatio屬性調(diào)大,如果2個(gè)thicknessRatio的數(shù)值不一致,則是出現(xiàn)下面這種效果,看需求自行調(diào)整

之后xml布局里使用此drawable:

<ProgressBar
+        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
+        android:progressDrawable="@drawable/progress_bar_green"
+        android:indeterminate="false"
        android:id="@+id/pbStorage"
        android:progress="60"
        android:max="100"
        android:layout_width="100dp"
        android:layout_height="100dp"/>

這里發(fā)現(xiàn)必須要使用 Widget.AppCompat.ProgressBar.Horizontal這個(gè)樣式才能使我們的progressDrawable屬性生效,猜測(cè)是ProgressBar內(nèi)部或者Android系統(tǒng)內(nèi)部應(yīng)該是固定ProgressBar那個(gè)圓形默認(rèn)樣式為不確定(且不允許設(shè)置為確定進(jìn)度)

具體原因就不深究了,有興趣的讀者可以研究研究,在評(píng)論區(qū)回復(fù)告知我 ??

參考

android實(shí)現(xiàn)圓形的ProgressBar停止轉(zhuǎn)動(dòng)_progressbar禁止轉(zhuǎn)動(dòng)

到此這篇關(guān)于淺析Android圓形進(jìn)度條ProgressBar如何實(shí)現(xiàn)固定進(jìn)度的文章就介紹到這了,更多相關(guān)Android ProgressBar固定進(jìn)度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android StrictMode運(yùn)行流程(推薦)

    Android StrictMode運(yùn)行流程(推薦)

    strictmode是android在 API9后引入的檢測(cè)影響app運(yùn)行流暢性的一種機(jī)制。這篇文章給大家介紹了android strictmode運(yùn)行流程,需要的朋友參考下吧
    2018-01-01
  • Android中刷新界面的二種方法

    Android中刷新界面的二種方法

    這篇文章主要介紹了Android中刷新界面的二種方法,本文使用Handler、postInvalidate兩種方法實(shí)現(xiàn)界面刷新,需要的朋友可以參考下
    2014-10-10
  • Android實(shí)現(xiàn)登錄注冊(cè)功能封裝

    Android實(shí)現(xiàn)登錄注冊(cè)功能封裝

    Android應(yīng)用軟件基本上都會(huì)用到登錄注冊(cè)功能,本篇文章主要介紹了Android登錄注冊(cè)功能封裝功能實(shí)現(xiàn),具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Android開(kāi)發(fā)之媒體播放工具類完整示例

    Android開(kāi)發(fā)之媒體播放工具類完整示例

    這篇文章主要介紹了Android開(kāi)發(fā)之媒體播放工具類,結(jié)合完整實(shí)例形式分析了基于MediaPlayer的事件監(jiān)聽(tīng)與多媒體文件播放相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • android 自定義Android菜單背景的代碼

    android 自定義Android菜單背景的代碼

    如何自定義Android菜單背景呢? 默認(rèn)的情況下Android系統(tǒng)的菜單是白色的,下面的例子可以通過(guò)自定義的xml布局實(shí)現(xiàn)個(gè)性化的menu
    2013-01-01
  • Android系統(tǒng)添加Linux驅(qū)動(dòng)

    Android系統(tǒng)添加Linux驅(qū)動(dòng)

    今天小編就為大家分享一篇關(guān)于Android系統(tǒng)添加Linux驅(qū)動(dòng)的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • android的ListView點(diǎn)擊item使item展開(kāi)的做法的實(shí)現(xiàn)代碼

    android的ListView點(diǎn)擊item使item展開(kāi)的做法的實(shí)現(xiàn)代碼

    這篇文章主要介紹了android的ListView點(diǎn)擊item使item展開(kāi)的做法的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Android 實(shí)現(xiàn)圓角圖片的簡(jiǎn)單實(shí)例

    Android 實(shí)現(xiàn)圓角圖片的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Android 實(shí)現(xiàn)圓角圖片的簡(jiǎn)單實(shí)例的相關(guān)資料,Android 圓角圖片的實(shí)現(xiàn)形式,包括用第三方、也有系統(tǒng),需要的朋友可以參考下
    2017-07-07
  • Flutter插件開(kāi)發(fā)之HmsScanKit實(shí)現(xiàn)示例詳解

    Flutter插件開(kāi)發(fā)之HmsScanKit實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了Flutter插件開(kāi)發(fā)之HmsScanKit實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android實(shí)現(xiàn)手機(jī)攝像頭的自動(dòng)對(duì)焦

    Android實(shí)現(xiàn)手機(jī)攝像頭的自動(dòng)對(duì)焦

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)手機(jī)攝像頭的自動(dòng)對(duì)焦的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評(píng)論

裕民县| 胶南市| 哈尔滨市| 巫山县| 马鞍山市| 灵山县| 那坡县| 邢台县| 吐鲁番市| 吐鲁番市| 新建县| 芷江| 建宁县| 马鞍山市| 确山县| 三穗县| 怀安县| 福安市| 普定县| 吉首市| 永春县| 五峰| 安平县| 文山县| 彭泽县| 关岭| 闻喜县| 青冈县| 枞阳县| 万荣县| 额尔古纳市| 清苑县| 乐东| 民勤县| 印江| 故城县| 高台县| 基隆市| 都昌县| 班戈县| 万年县|