问题
我想在这张图片中制作一个进度条:
期望的行为是:
到目前为止我发现了什么
我发现这篇文章可以说明我想要的东西.这种方法有什么问题吗?此外,该示例未显示如何自定义进度条(在我的情况下,我希望在带有弯角的视图顶部使用灰色).但我最想知道的是,该链接的方法是否合适.
我的猜测
我主要担心的是当请求到达时发生的"快速填充"但进度条尚未达到100%(我认为这将是大多数情况;请求不太可能达到100% ).考虑到链接中的内容,我在想,当请求到达时,该方法doSomeTasks应该在一个小间隔内返回进度条状态+ 1.因此,在示例中,如果它在55,它将返回56,57,58 ......直到100,并且返回将在它们之间具有间隔,例如0.5秒.这样,我想我可以模拟进度条快速增长到100%.
非常感谢任何帮助,谢谢!
我想让我的进度条看起来像这样:

我不想使用图像,所以我试图用形状做这个:
<item android:id="@android:id/background">
<shape>
<corners android:radius="50dp" />
<gradient
android:angle="270"
android:centerColor="#2a2723"
android:centerY="0.75"
android:endColor="#2a2723"
android:startColor="#2a2723" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="50dp" />
<gradient
android:angle="270"
android:centerColor="#16e61c"
android:centerY="0.75"
android:endColor="#9dfd6e"
android:startColor="#16e61c" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="50dp" />
<gradient
android:angle="270"
android:endColor="#9dfd6e"
android:startColor="#16e61c" />
</shape>
</clip>
</item>
Run Code Online (Sandbox Code Playgroud)
但是我不能为绿线设置填充(我试图在可能的地方设置它),而且我也不能做出这样的圆角(看起来corners android:radius不起作用).请帮我
我想创建一个循环进度条,如下图所示
我不知道创建此进度条的方法是什么.我不知道应该准备什么资产.
android android-assets android-animation android-progressbar
我想检查上传文件的进度HttpUrlConnection.我怎么能这样做?我曾尝试在写入数据时计算字节数,OutputStream但这是错误的,因为只有在我调用时才会发生真正的上传conn.getInputStream(),因此我需要以某种方式检查inputStream.这是我的代码:
public static void uploadMovie(final HashMap<String, String> dataSource, final OnLoadFinishedListener finishedListener, final ProgressListener progressListener) {
if (finishedListener != null) {
new Thread(new Runnable() {
public void run() {
try {
String boundary = getMD5(dataSource.size()+String.valueOf(System.currentTimeMillis()));
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.setCharset(Charset.forName("UTF-8"));
for (String key : dataSource.keySet()) {
if (key.equals(MoviesFragmentAdd.USERFILE)) {
FileBody userFile = new FileBody(new File(dataSource.get(key)));
multipartEntity.addPart(key, userFile);
continue;
}
multipartEntity.addPart(key, new StringBody(dataSource.get(key),ContentType.APPLICATION_JSON));
}
HttpEntity entity = multipartEntity.build();
HttpURLConnection conn = (HttpsURLConnection) new URL(URL_API + …Run Code Online (Sandbox Code Playgroud) upload android multipart httpurlconnection android-progressbar
我最近遇到了一个问题,即行ProgressBar内使用的不确定动画ListView变得不稳定.简而言之,我有一个ListView每行包含一个ProgressBar.动画看起来很棒,直到我滚动; 从那以后,至少有一个ProgressBar会有一个不稳定的动画.
有谁知道如何解决这个问题?

查看ListView行
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:indeterminate="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
简单的自定义ArrayAdapter
public class MyAdapter extends ArrayAdapter {
List list;
public MyAdapter(Context context, List objects) {
super(context, 0, objects);
list = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = ((LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.list_row, parent, false);
}
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
示例Activity的OnCreate()方法
@Override
protected void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 样式确定的进度条很容易,有很多教程可以实现.这是我正在使用:
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@drawable/progress_background"
android:progressDrawable="@drawable/progress"
android:id="@+id/progressBar" />
Run Code Online (Sandbox Code Playgroud)
抽奖progress_background.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@color/colorAccent" />
<corners android:radius="4dp" />
</shape>
</clip>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
但是当进展还没有时,我想使用不确定的进展.所以我尝试过:
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@drawable/progress_background"
android:progressDrawable="@drawable/progress"
android:indeterminateTint="@color/colorAccent"
android:indeterminateTintMode="src_in"
android:indeterminate="true"
android:id="@+id/progressBar" />
Run Code Online (Sandbox Code Playgroud)
但不确定的进展并没有延伸到高度:
我尝试使用可绘制文件来设置它的样式,但它看起来像破坏的确定进度条(从0到100重新填充).
所需的不确定进度条应该看起来像普通的进度条,但高度为8dp,圆角.
我的应用程序中有这个流程:
声明端点:
public interface EndPoints {
@GET(Constants.POPULAR)
Call<AllData> getAllData(
@Query("api_key") String apiKey
);
}
Run Code Online (Sandbox Code Playgroud)
改造服务:
private static EndPoints endPoints = retrofit.create(EndPoints.class);
public static EndPoints getEndpoints() {
return endPoints ;
}
Run Code Online (Sandbox Code Playgroud)
我在我的视图模型中调用它:
private void getDataFromApi() {
Call<AllData> call = RetrofitService.getEndPoints().getAllData(Constants.API_KEY);
call.enqueue(new Callback<AllData>() {
@Override
public void onResponse(Call<AllData> call, Response<AllData> response) {
}
if (response.isSuccessful()) {
_allData.setValue(response.body());
}
@Override
public void onFailure(Call<AllData> call, Throwable t) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
基础活动:
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) …Run Code Online (Sandbox Code Playgroud) 我使用“android.material.progressindicator”来在水平视图中显示进度,但我听不到我的 XML
<com.google.android.material.progressindicator.ProgressIndicator
android:background="@color/grey"
android:id="@+id/progressInd"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Determinate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:max="100"
android:progress="30"
android:progressDrawable="@drawable/bidding_progress" />
Run Code Online (Sandbox Code Playgroud)
android android-progressbar material-design material-components material-components-android
我在布局中添加了一个进度条,如下所示,我还为其添加了颜色,并且效果很好。
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="50dp"
android:layout_height="50dp"
android:indeterminate="true"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/color"
android:layout_gravity="center_vertical|center_horizontal"
android:visibility="visible"
/>
Run Code Online (Sandbox Code Playgroud)
但我需要在上面添加渐变颜色。我在颜色文件夹中添加了渐变,如下所示。
<gradient android:type="linear"
android:angle="0"
android:startColor="#dc0336"
android:endColor="#ff7f00"
xmlns:android="http://schemas.android.com/apk/res/android" />
Run Code Online (Sandbox Code Playgroud)
然后我将这个颜色分配给Progressbar
android:indeterminateTint="@color/gradientColor"
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我需要知道一种方法来添加渐变progressBar
android android-layout android-progressbar android-constraintlayout
我想使用CircularProgressIndicator材质库中的宽度自定义尺寸,但是当我为视图设置任何宽度或高度时,只是视图本身发生变化而不是其中的圆圈。我想要实现的是填充图像视图的进度,如下图所示
这是我的代码
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/circleBackground"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="H,1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.5"
app:shapeAppearanceOverlay="@style/circleImageView"
tools:src="@tools:sample/avatars" />
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/progressBar"
android:layout_width="0dp"
android:layout_height="0dp"
android:max="100"
android:progress="50"
app:indicatorColor="@color/green_true"
app:indicatorDirectionCircular="clockwise"
app:layout_constraintBottom_toBottomOf="@id/circleBackground"
app:layout_constraintLeft_toLeftOf="@id/circleBackground"
app:layout_constraintRight_toRightOf="@id/circleBackground"
app:layout_constraintTop_toTopOf="@id/circleBackground"
app:trackColor="#50ffffff"
app:trackCornerRadius="90dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)