我想绘制一个纯动态视图,如下图所示
我有两个arraylist
List<String> type and List<Float> level;
Run Code Online (Sandbox Code Playgroud)
type具有名称(max,type1,type2等),level具有类型的标记值
level将始终位于0到1之间,type将是一个字符串,level和type的值将来自服务器.我们有两个固定标签 - 最小和最大.
假设我得到.4表示最小值,而.5表示最大值来自服务器,那么所有类型(type1,type2,type3等)将介于.4和.5之间.然后所有其他类型应该像弯曲线一样排列,但是如果我们获得min的值是.001和最大.9那么我们有足够的空间来显示其余的标签,在这种情况下我们不需要通过弯曲显示线或标记.但我不知道如何实现它或从我可以开始的地方.任何帮助将非常感激.在此先感谢所有人.
如果以上设计有点复杂,那么请给我一些参考或链接以实现以下设计.

如果我能够做到这个更简单的(图片上方),那将是非常有利的.
我在onCreate()块中尝试过以下代码.
ViewTreeObserver viewTreeObserver = viewbar.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressLint({ "NewApi", "ResourceAsColor" })
@Override
public void onGlobalLayout() {
viewbar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
viewWidth = viewbar.getWidth();
viewHeight = viewbar.getHeight();
DefineType definetype = new DefineType();
float maxvalue = Collections.max(definetype.frameCalLevels);
float minvalue = Collections.min(definetype.frameCalLevels);
min.setText(definetype.frameCalType.get(0).toString());
max.setText(definetype.frameCalType.get(4).toString());
float density = getApplicationContext().getResources().getDisplayMetrics().density; …Run Code Online (Sandbox Code Playgroud)