圆形进度条不覆盖整个可用空间

时间:2016-08-16 09:46:25

标签: android xml android-layout progress-bar

我已经有一段时间了。 #newbieAndroidDeveloper

我正在制作循环进度条。问题是动画圆圈没有利用进度条的可用空间。

屏幕截图应该解释这个问题。

this

蓝色不完整圆圈是圆形进度条。黄色方块是进度条的背景。红色箭头是未使用的空间,这是值得关注的问题。

进度条和背景的大小通过代码设置。 我想让圆形进度条使用整个空间。

RaceLiveActivity.java

public class RaceLiveActivity extends AppCompatActivity {
    Drawable drawable;
    String length;
    int len, totalDistance;
    TextView textViewDistance, textViewTime, textViewSpeed;
    FrameLayout raceFrame;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        totalDistance = 0;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_race_live);

        //TO FIND WIDTH AND  HEIGHT OF PHONE SCREEN
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);

        //SET WIDTH AND HEIGHT 
        raceLiveActivity = this;

        ProgressBar prog=(ProgressBar) findViewById(R.id.progressBar1);
        FrameLayout.LayoutParams FrameLP1 = new FrameLayout.LayoutParams(displaymetrics.widthPixels-100 , displaymetrics.widthPixels -100 );
        FrameLP1.gravity = Gravity.CENTER;
        prog.setBackgroundColor(Color.YELLOW);
        prog.setLayoutParams(FrameLP1);


        length = "1";//int1.getStringExtra("length");
        len = Integer.valueOf(length);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
        ObjectAnimator animation = ObjectAnimator.ofInt (progressBar, "progress", 0, 500); // see this max value coming back here, we animale towards that value
        animation.setDuration (len * 60000); //in milliseconds
        animation.setInterpolator (new DecelerateInterpolator());
        animation.start ();
    }
}

activity_race_live.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/BackLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#FD4C0D">
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/RaceProress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="3"
        android:background="#FD4C0D"
        >
        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:indeterminate="false"
            android:progressDrawable="@drawable/circular_progress_bar"
            android:progress="0"
            ></ProgressBar>

    </FrameLayout>
</LinearLayout>

circular_progress_bar.xml (可绘制的形状)

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="0">
    <shape
        android:shape="ring"
        android:thickness="3dp"
        android:useLevel="true">
        <gradient
            android:angle="0"
            android:endColor="#005B7F"
            android:startColor="#005B7F"
            android:type="sweep"
            android:useLevel="false">
        </gradient>
    </shape>
</rotate>

实际上,此活动还有其他要素。我已经删除它们以专注于这个问题。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

即使我没有找到答案,为什么它没有使用未使用的空间,我发现了另一个很酷的进度条库。 ProgressWheel.

它可以自定义。您可以使用android的默认进度条工具独立调整进度圆的大小而不用背景。这解决了我的问题。

enter image description here

希望它有所帮助。但我仍然很好奇为什么android的默认进度条没有用尽问题中提到的整个空间。任何帮助都会受到欢迎。