在Android中实现图表或进度条
我想在Android中实现一个进度条或图表,如下所示:在Android中实现图表或进度条,android,android-progressbar,Android,Android Progressbar,我想在Android中实现一个进度条或图表,如下所示: 那么,是否有任何第三方库或任何我可以遵循的示例?事实上,这种观点是什么?它是包含3个阶段的进度条还是图表?首先,您需要了解可绘制资源: 这就是我们将要用来制作这个图形的东西 首先,我们将从绿色条开始。绿色条将占据整个宽度,我们将用其他图形覆盖它。这将是一个可拉伸的形状 /res/drawable/green_bar.xml: <?xml version="1.0" encoding="utf-8"?> <shape xm
那么,是否有任何第三方库或任何我可以遵循的示例?事实上,这种观点是什么?它是包含3个阶段的进度条还是图表?首先,您需要了解可绘制资源: 这就是我们将要用来制作这个图形的东西 首先,我们将从绿色条开始。绿色条将占据整个宽度,我们将用其他图形覆盖它。这将是一个可拉伸的形状 /res/drawable/green_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FF009900"/>
<size android:height="12dp" android:width="12dp"/>
<corners android:radius="6dp"/>
</shape>
现在我们将使用它作为通用视图的背景:
(摘自/res/layout/activity_main.xml)
这一点很重要:因为pointybar.xml
中的secondary
列在primary
之前,所以我们必须确保始终在ssconondary
上设置较高级别,在primary
上设置较低级别。如果较高的级别在主上,则它将覆盖次而您将看不到它。(也许我应该给ID起个更好的名字。我走得太快了。)
这就是最终的结果
看看我们是如何在XML中实现这一点的?这就是谷歌希望您这样做的方式。首先,您需要了解可绘制资源:
这就是我们将要用来制作这个图形的东西
首先,我们将从绿色条开始。绿色条将占据整个宽度,我们将用其他图形覆盖它。这将是一个可拉伸的形状
/res/drawable/green_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FF009900"/>
<size android:height="12dp" android:width="12dp"/>
<corners android:radius="6dp"/>
</shape>
现在我们将使用它作为通用视图的背景:
(摘自/res/layout/activity_main.xml)
这一点很重要:因为pointybar.xml
中的secondary
列在primary
之前,所以我们必须确保始终在ssconondary
上设置较高级别,在primary
上设置较低级别。如果较高的级别在主上,则它将覆盖次而您将看不到它。(也许我应该给ID起个更好的名字。我走得太快了。)
这就是最终的结果
看看我们是如何在XML中实现这一点的?这就是谷歌希望你这样做的方式。看起来像一张图表。你是在问如何使用原始Android代码,还是如何使用MPAndroidChart?我可以解释如何用代码来实现它。你不需要进度条。@krislarson如何使用代码?谢谢。看起来像一张图表。你是在问如何使用原始Android代码还是使用MPAndroidChart?我可以解释如何用代码来实现它。你不需要进度条。@krislarson如何使用代码?谢谢,很好!不过,是我还是酒吧里的空白与灰白色背景不一样?很好。非常令人印象深刻。谢谢你,克里斯。@cricket_007不是你。我使用全白色作为倾斜形状,但默认主题必须使用灰白色作为背景。白色被烘焙到九块PNG中。我考虑过编写一个自定义的Drawable
,它将使用Path
来绘制尖尖的形状,但这意味着我必须用XML编写其余所有的Drawable,因为您无法注入自定义的Drawable。安全风险,很好!不过,是我还是酒吧里的空白与灰白色背景不一样?很好。非常令人印象深刻。谢谢你,克里斯。@cricket_007不是你。我使用全白色作为倾斜形状,但默认主题必须使用灰白色作为背景。白色被烘焙到九块PNG中。我考虑过编写一个自定义的Drawable
,它将使用Path
来绘制尖尖的形状,但这意味着我必须用XML编写其余所有的Drawable,因为您无法注入自定义的Drawable。安全风险。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/green_bar" android:gravity="fill_horizontal"/>
<item android:id="@+id/secondary" android:drawable="@drawable/scalepointy"/>
<item android:id="@+id/primary" android:drawable="@drawable/scalepointy"/>
</layer-list>
<View
android:id="@+id/bargraph"
android:layout_width="match_parent"
android:layout_height="12dp"
android:layout_marginLeft="32dp"
android:layout_marginRight="32dp"
android:background="@drawable/pointybar"/>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("Pointy Chart Demo");
View view = findViewById(R.id.bargraph);
LayerDrawable layerDrawable = (LayerDrawable) view.getBackground();
Drawable d1 = layerDrawable.findDrawableByLayerId(R.id.primary);
d1.setLevel(6000); // 60%
Drawable d2 = layerDrawable.findDrawableByLayerId(R.id.secondary);
d2.setLevel(8000); // 80%
}