相关疑难解决方法(0)

用动态数据创建"L"形曲线

我想绘制一个纯动态视图,如下图所示

在此输入图像描述

我有两个arraylist

List<String> type and List<Float> level;
Run Code Online (Sandbox Code Playgroud)

type具有名称(max,type1,type2等),level具有类型的标记值

level将始终位于0到1之间,type将是一个字符串,leveltype的值将来自服务器.我们有两个固定标签 - 最小最大.

假设我得到.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)

android dynamic-data line draw

6
推荐指数
1
解决办法
452
查看次数

标签 统计

android ×1

draw ×1

dynamic-data ×1

line ×1