如何改进我的进度条匹配以跟随图像(颜色,角度,形状等)

时间:2015-05-11 14:21:09

标签: java android android-layout android-intent android-activity

我创建了一个循环进度条,并使其尽可能地跟随下图中的设计。

但是我很难将它与下图中的设计相匹配(颜色,角度,形状等):

我不知道如何匹配:

  • 以上颜色?
  • 或形状?

设计我想跟随:

http://i.stack.imgur.com/ZVzZm.png

我目前的设计如下所示:

http://i.stack.imgur.com/nzyiL.png

到目前为止我的代码如下:

activity_main.xml中

 <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:id="@+id/progressBar"
        android:layout_width="240dp"
        android:layout_height="240dp"
        android:indeterminate="false"
        android:max="100"
        android:progress="75"
        android:progressDrawable="@drawable/style_circular_fill"
        android:secondaryProgress="10"
        android:layout_alignParentBottom="false"
        android:layout_alignParentStart="false"
        android:focusableInTouchMode="false"
        android:layout_alignParentTop="true"
        android:layout_marginTop="70dp"
        xmlns:android="http://schemas.android.com/apk/res/android" />

style_circular_fill.xml

<item android:id="@android:id/secondaryProgress">
    <rotate
        android:fromDegrees="270"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="270" >
        <shape
            android:innerRadiusRatio="2.5"
            android:shape="ring"
            android:thicknessRatio="20.0"
            android:useLevel="true" >
            <gradient
                android:centerColor="#A9E2F3"
                android:endColor="#A9E2F3"
                android:startColor="#A9E2F3"
                android:type="sweep" />
        </shape>
    </rotate>
</item>
<item android:id="@android:id/progress">
    <rotate
        android:fromDegrees="270"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="270" >
        <shape
            android:innerRadiusRatio="2.5"
            android:shape="ring"
            android:thicknessRatio="20.0"
            android:useLevel="true" >
            <gradient
                android:centerColor="#26ce61"
                android:endColor="#26ce61"
                android:startColor="#26ce61"
                android:type="sweep" />
        </shape>
    </rotate>
</item>

3 个答案:

答案 0 :(得分:1)

您可以试用CircleProgress库。其中一个示例与您的要求非常相似。

我没有使用它,因此无法确认其易用性。

为了保持平衡,请查看Progress Bar库的this list。可能有一个库可以达到预期的效果。

答案 1 :(得分:1)

我建议您将图像导出到匹配资源文件夹(mdpi,hdpi等等);

之后创建一个这样的动画xml文件(让我们调用这个文件“progress_bar_animation.xml”):

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/your_resource_file_name"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="1"
    android:fromDegrees="0"
    android:toDegrees="1800" />

然后创建一个进度条样式(在style.xml文件中)

 <style name="ProgressBar" parent="Base.Widget.AppCompat.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_bar_animation</item>
    </style>

最后在xml中添加一个进度条并设置之前创建的样式,如下所示:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/ProgressBar" />

答案 2 :(得分:0)

使用此进度对话

  public class MyCustomProgressDialog extends ProgressDialog {

private Context c;
private ProgressWheel pd;
private ImageView imgLogo;

public MyCustomProgressDialog(Context context) {
    super(context);
    getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    c=context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.progress_bar_loading);

}

@Override
public void show() {
    super.show();
}

@Override
public void dismiss() {
    super.dismiss();
}
}

progress_bar_loading.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transperent"
android:gravity="center"
>
<TextView
    android:id="@+id/lbl_x"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center_horizontal"
    android:text=" "
    android:textColor="@color/white"
    android:textSize="20sp"
    android:textStyle="bold"/>

<com.organigoal.customcontrol.ProgressWheel
    android:id="@+id/progress_wheel"
    xmlns:wheel="http://schemas.android.com/apk/res-auto"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerInParent="true"
    wheel:barColor="@color/grey"
    wheel:progressIndeterminate="true"/>