- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有自定义搜索栏,我可以通过设置新的进度可绘制对象来更改 onProgressChanged 中的颜色:
seek.setProgressDrawable(res.getDrawable(R.drawable.seekbar_bg1));
但我想要一个根据进度从绿色到红色的纯色搜索栏。有没有一种方法可以使用渐变颜色之类的东西,这样我就不需要创建 100 个可绘制对象了?
<?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>
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:id="@+id/progressshape">
<clip>
<shape>
<solid android:color="@color/custom_yellow" />
</shape>
</clip>
</item>
</layer-list>
对于那些对解决方案感兴趣的人。我使用以下代码:
此方法设置颜色:
public void setProgressBarColor(int newColor){
LayerDrawable ld = (LayerDrawable) getProgressDrawable();
ClipDrawable d1 = (ClipDrawable) ld.findDrawableByLayerId(R.id.progressshape);
d1.setColorFilter(newColor, PorterDuff.Mode.SRC_IN);
}
并在 onProgressChanged 中:
if(progress <= 50){
seek.setProgressBarColor(Color.rgb( 255 - (255/100 * (100 - progress*2)), 255, 0));
}else{
seek.setProgressBarColor(Color.rgb( 255, 255 - (255/100 * (progress - 50)*2), 0));
}
最佳答案
我用这个方法做了类似的事情:
public void setProgressBarColor(ProgressBar progressBar, int newColor){
LayerDrawable ld = (LayerDrawable) progressBar.getProgressDrawable();
ClipDrawable d1 = (ClipDrawable) ld.findDrawableByLayerId(R.id.progressshape);
d1.setColorFilter(newColor, PorterDuff.Mode.SRC_IN);
}
然后,当您更新进度时,您只需更改所需的颜色即可。
关于android - 在 onProgressChanged 上更改搜索栏的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9837843/
如何监控 ExoPlayer 上的进度变化? 我试图实现一个隐藏的 MediaController 并覆盖 setOnSeekBarChangeListener 方法,但目前没有成功。我想知道是否有其
我有一个带有两个搜索栏的 Android 应用程序,并且我已将它们设置为除非同时按下它们,否则该应用程序不会响应。我的问题是,当它们都被按下时,方法 onProgressChanged(SeekBar
我有一个后台工作人员报告计算进度。它在 ProgressChangedEventArgs 中返回它正在处理的当前行号。我可以从那里确定完成的百分比 (int) (100 * (double)e.Pro
在我的 android 应用程序中,我有一个加载 javascript 文件的 webview。 javascript 依次加载一些图像。 //javascript file var imageObj
这是我使用的代码: import android.support.v4.app.Fragment; import android.content.Context; import android.os.
Chrome/WebView 版本:53 和 54 测试版 示例网址:bbc.com , cnn.com 重现问题的步骤: 启动基于 webview 的应用程序,并安装了 chrome/webview
如果我通过 seek.setProgress(1) 设置 seekbarprogress 的最小值并通过 if 语句在 onProgressChanged() 中定义条件,则 seek.setOnSe
我有一些具体要求。我有一个搜索栏。现在假设进度为 0,因此当我增加搜索栏时它必须直接达到 50,而当我增加搜索栏时它必须直接达到 100。它工作正常。但是现在,当我减少进度时,它必须再次变为 50,而
我有自定义搜索栏,我可以通过设置新的进度可绘制对象来更改 onProgressChanged 中的颜色: seek.setProgressDrawable(res.getDrawable(R.draw
如果我通过代码设置搜索栏的进度或最大值,则会触发 onProgressChanged 事件。如何防止这种情况?我希望事件仅在用户通过拖动搜索栏的拇指从 UI 修改进度值时触发。 最佳答案 设置您的 O
我创建了一个自定义 SeekBarPreference,它会显示可供选择的时间范围(例如 0.2 秒到 2.2 秒) .我的问题是 onProgressChanged() 被调用了两次 - 一次使用
我在我的 Android 应用程序中使用 Sherlock 侧面导航 fragment 。但是,我使用 6 个 fragment ,全部包含带有进度条的 Web View 。 这是其中一个 fragm
我的应用程序使用 BackgroundWorker 将文件上传到 FTP 服务器。一切正常,但 OnProgressChanged 事件似乎无法正常工作。 虽然 OnProgressChanged 将
我创建了一个可重复使用的自定义组件(一个带有 Canvas 位图的自定义 View ),它是一个可用于任何事物(音量控制/评级系统)的 slider 。问题是我需要监控它的进度,比如搜索栏 onPro
当我以编程方式设置 SeekBar 的进度时,我的 onProgressChanged() 事件没有被触发,但当我物理移动 SeekBar slider 时它确实被触发得很好。 我希望事件在使用 se
如何从代码调用 SeekBar 的 onProgressChanged ?是否有类似的东西,比如执行点击按钮? 最佳答案 在搜索栏对象上使用此监听器 SeekBar seek=new
我已成功将此网站 (http://code.google.com/p/range-seek-bar/) 中的 RangeSeekbar 实现到我的应用程序中。 很多人现在遇到的问题是,我们无法在 Ra
我是 android 开发的新手,我使用 onProgressChanged 获取当前进度,因为进度是函数的参数。 但是当用户释放 seekbar 而不是立即值时,我只想获得进度的最终值。 提前致谢。
我需要在 WebView -> WebChromeClient -> onProgressChanged() 中访问进度值。进度整数值不会从 0 增加到 100,而是会跳来跳去。这是加载一页和相关进度
我是一名优秀的程序员,十分优秀!