Seekbar进度条有黑点问题分析

Android  小知识  2023年6月25日 am9:37发布1年前 (2023)更新 城堡大人
134 0 0

前言

同样的代码,在不同设备上可能存在不同的表现。目前测试在MTK的平台上发现,使用如下代码:

<SeekBar
    android:id="@+id/play_sb_process"
    android:layout_width="754dp"
    android:layout_height="40dp"
    android:duplicateParentState="true"
    android:progressDrawable="@drawable/seek_bar_img"
    android:thumb="@color/transparent" />

seek_bar_img的xml如下

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/seek_bar_bg_n"/>
    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/seek_bar_bg_n"/>
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/seek_bar_bg_p"/>
</layer-list>

进度条progress上存在一个黑点

正文

一开始以为是UI的切图问题,然后找了其他正常的UI放上去,还是存在。

分析

先分析前,需要看一下setThumb源码(初始化也是获取thumb并通过这个方法设置的)。

public void setThumb(Drawable thumb) {
    final boolean needUpdate;
    if (mThumb != null && thumb != mThumb) {
        mThumb.setCallback(null);
        needUpdate = true;
    } else {
        needUpdate = false;
    }

    if (thumb != null) {
        thumb.setCallback(this);
        if (canResolveLayoutDirection()) {
            thumb.setLayoutDirection(getLayoutDirection());
        }
        mThumbOffset = thumb.getIntrinsicWidth() / 2;
        if (needUpdate &&
                (thumb.getIntrinsicWidth() != mThumb.getIntrinsicWidth()
                    || thumb.getIntrinsicHeight() != mThumb.getIntrinsicHeight())) {
            requestLayout();
        }
    }

    mThumb = thumb;

    applyThumbTint();
    invalidate();

    if (needUpdate) {
        updateThumbAndTrackPos(getWidth(), getHeight());
        if (thumb != null && thumb.isStateful()) {
            int[] state = getDrawableState();
            thumb.setState(state);
        }
    }
}

隐藏内容!
付费阅读后才能查看!
1
3
多个隐藏块只需支付一次

参考文章

 历史上的今天

  1. 2024: 莫言:陪女儿高考(0条评论)
  2. 2022: [代码]Listener和MainListener(0条评论)
  3. 2021: Ubuntu允许root用户远程登录简单介绍(0条评论)
  4. 2021: 席慕容:抉择(0条评论)
  5. 2020: shape之gradient属性简介(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

CarAudioManager方法简介

前言参考别人文章,看Android中车载部分CarAudioManager类中部分方法的介绍。正文简单记录一下CarAudioManager中方法的说明。packages\services\Car\car-lib\src\android\car\media\CarAudioManager....

聂鲁达:我喜欢你是寂静的

我喜欢你是寂静的,仿佛你消失了一样。你从远处聆听我,我的声音却无法触及你。好像你的双眼已经飞离远去,如同一个吻,封缄了你的嘴。如同所有的事物充满了我的灵魂,你从所有的事物中浮现,充满了我的灵魂。你像我灵魂,一只梦的蝴蝶,你如同忧郁这个字。我喜欢你是寂静的,好像你已远去。你听起来像在...

Class not found when unmarshalling

前言记录一下使用Bundle.putParcelable()或Bundle.putParcelableArrayList()传输Parcelable数量时出现的问题,方便自己查阅。正文报错日志Parcel (14686): Class not found when unmarshalli...

FileProvider的使用

前言自Android 7.0开始,Android 框架开启了严格模式(StrictMode),禁止应用将file:///开头的Uri共享给其他的应用读写文件,否则会收到FileUriExposedException的异常。因此,Android提供了新的文件共享机制FileProvider。记录...

[转]android NTP时间同步

推荐使用 极客导航:极客导航(http://www.biumall.com/jike.html)相关文件:frameworks/base/services/java/com/android/server/SystemServer.javaframeworks/base/service...

Android动画之帧动画(Frame动画)

Android动画View Animation 视图动画(Tween Animation 补间动画),只能用来设置View的动画Drawable Animation 帧动画(Frame动画),一帧帧地显示资源文件中的DrawableProperty Animation 属性动画,在andr...