简单的仪表视图,比如android中的speedmeter?

简单的仪表视图,比如android中的speedmeter?,android,view,android-animation,android-custom-view,gauge,Android,View,Android Animation,Android Custom View,Gauge,我想有一个简单的仪表视图,在这里我将定义开始值和结束值,并有一个指针来显示给定的变量值 所以我可以显示一个给定的值,比如速度表。例如,如果我的文本视图的值是1300,那么在文本视图旁边,我希望有这样的自定义米视图动画 有可能吗?有没有现成的示例代码?我在找到的另一个示例代码,使用了它,效果非常好 看。 它有一个仪表库和一些可以交互的示例 非常感谢店主伊芙琳娜·弗拉比 但是,它不适用于XHDPI/少数版本的android设备(4以上)。问题是仪表视图中的文本。对于任何寻找简单仪表视图的人,我

我想有一个简单的仪表视图,在这里我将定义开始值和结束值,并有一个指针来显示给定的变量值

所以我可以显示一个给定的值,比如速度表。例如,如果我的文本视图的值是1300,那么在文本视图旁边,我希望有这样的自定义米视图动画

有可能吗?有没有现成的示例代码?

我在找到的另一个示例代码,使用了它,效果非常好

看。 它有一个仪表库和一些可以交互的示例

非常感谢店主伊芙琳娜·弗拉比



但是,它不适用于XHDPI/少数版本的android设备(4以上)。问题是仪表视图中的文本。

对于任何寻找简单仪表视图的人,我制作了一个库,您可以根据需要克隆和使用/修改


您推荐的所有其他仪表都有缺陷,在Kitkat和棒棒糖上运行不正常。这里也没有Android Studio和gradle友好的库

下面是git repo,它是最近更新的一个,可用于Gradle的棒棒糖:

将库包含在项目中后,将gaugelibrary添加到活动的xml布局中:

<io.sule.gaugelibrary.GaugeView
 android:id="@+id/gauge_view"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#ffffff"
 gauge:showOuterShadow="false"
 gauge:showOuterRim="false"
 gauge:showInnerRim="false"
 gauge:needleWidth="0.010"
 gauge:needleHeight="0.40"
 gauge:scaleStartValue="0"
 gauge:scaleEndValue="100"
 />

这将实例化指针,并使其动画移动到随机值。

我不知道后面的答案是否有用。我也遇到了同样的情况,我想使用仪表来可视化数据,因为仪表在android中不是作为小部件提供的,作为一个爱好者,我去了类似上面的图书馆,可以通过互联网上的各种链接找到,尽管它很有帮助(多亏了它的优秀作者……)在某些情况下,我发现自己很难将JavaScript可视化,因此我为我的应用程序所做的另一个解决方案是将JavaScript量表集成到我的android应用程序中。 您可以通过以下步骤完成此操作

  • 在我们的项目中创建一个资产文件夹——如果有人不知道,您将看到如何创建资产文件夹
  • 下一个是你设计了一个html页面,关于你的页面是什么样子的,比如页眉,语言的数量等等。。。并将其放置在文件夹资源中
  • 有许多网站提供类似的语言,或者你可以浏览其他网站,并采取任何你觉得酷。。。!! 将所有文件(包括.js文件)放入资产文件夹中
  • Android提供了一个用于处理WebViView的类,名为“WebViewClient”,您可以在internet上浏览更多内容以了解更多信息
  • 这是查看webview内容的示例代码

    web=(WebView)findviewbyd(R.id.webview01); progressBar=(progressBar)findViewById(R.id.progressBar1)

  • 上面的代码用于加载html&javscript

     public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            progressBar.setVisibility(View.VISIBLE);
            view.loadUrl(url);
            return true;
    
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
    
            progressBar.setVisibility(View.GONE);
        }
    }
    
    这是webview类

  • 您还可以将数据从“活动”发送到html页面
    请通读所有内容,欢迎更正

    我刚才做了这个。请随意克隆和修改。(它吸收了一些旧思想。)

    可以轻松地将其添加到Gradle项目中:

    repositories {
        maven {
            url 'https://www.jitpack.io'
        }
    }
    
    dependencies {
        compile 'com.github.Pygmalion69:Gauge:1.1'
    }
    
    repositories {
        maven {
            url 'https://www.jitpack.io'
        }
    }
    
    dependencies {
    implementation 'com.jignesh13.speedometer:speedometer:1.0.0'
    }
    
    视图是用XML声明的:

    <de.nitri.gauge.Gauge
        android:id="@+id/gauge1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:layout_weight="0.75"
        gauge:labelTextSize="42"
        gauge:maxValue="1000"
        gauge:minValue="0"
        gauge:totalNicks="120"
        gauge:valuePerNick="10"
        gauge:upperText="Qty"
        gauge:lowerText="@string/per_minute" />
    
    
    
    以下是以编程方式设置值的示例:

        final Gauge gauge1 = (Gauge) findViewById(R.id.gauge1);
        final Gauge gauge2 = (Gauge) findViewById(R.id.gauge2);
        final Gauge gauge3 = (Gauge) findViewById(R.id.gauge3);
        final Gauge gauge4 = (Gauge) findViewById(R.id.gauge4);
    
        gauge1.moveToValue(800);
    
        HandlerThread thread = new HandlerThread("GaugeDemoThread");
        thread.start();
        Handler handler = new Handler(thread.getLooper());
    
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                gauge1.moveToValue(300);
            }
        }, 2800);
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                gauge1.moveToValue(550);
            }
        }, 5600);
    
        HandlerThread gauge3Thread = new HandlerThread("Gauge3DemoThread");
        gauge3Thread.start();
        Handler gauge3Handler = new Handler(gauge3Thread.getLooper());
        gauge3Handler.post(new Runnable() {
            @Override
            public void run() {
                for (float x = 0; x <= 6; x += .1) {
                    float value = (float) Math.atan(x) * 20;
                    gauge3.moveToValue(value);
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    
        gauge4.setValue(333);
    
    final Gauge gauge1=(Gauge)findViewById(R.id.gauge1);
    最终量规2=(量规)findViewById(R.id.gauge2);
    最终量规3=(量规)findViewById(R.id.gauge3);
    最终量规4=(量规)findViewById(R.id.gauge4);
    计量器1.移动值(800);
    HandlerThread螺纹=新HandlerThread(“标准螺纹”);
    thread.start();
    Handler=newhandler(thread.getLooper());
    handler.postDelayed(新的Runnable(){
    @凌驾
    公开募捐{
    计量器1.移动值(300);
    }
    }, 2800);
    handler.postDelayed(新的Runnable(){
    @凌驾
    公开募捐{
    计量器1.移动值(550);
    }
    }, 5600);
    HandlerThread gauge3Thread=新HandlerThread(“Gauge3DemoThread”);
    gauge3Thread.start();
    Handler gauge3Handler=新处理程序(gauge3Thread.getLooper());
    gauge3Handler.post(新的Runnable(){
    @凌驾
    公开募捐{
    
    对于(float x=0;x,您将在该网站上找到一些免费的可定制仪表

    非常容易安装,并且有很好的文档记录。 例如,按照下面的说明,您可以在5分钟内免费获得类似的东西

    点击上面链接的网站。点击GR004,弹出窗口出现后点击“免费下载”。 该库将被下载、解压缩并按照说明在Android项目中安装该库(aar文件)

    在XML布局中编写此代码,您的仪表将完成:

    <com.sccomponents.gauges.gr004.GR004
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    
    
    您可以使用许多XML选项对其进行自定义:

    • 持续时间
    • sccEnableTouch
    • 倒转
    • sccFontName
    • sccLabelsSizeAdjust
    • 刺猬
    • SCCmax值
    • sccMinorTicks
    • SCC无效
    • SCCShow等高线
    • sccShowLabels
    • 超文本
    • SCC值
    并通过编码实现相关功能。

    使用以下方法:

    可以轻松地将其添加到Gradle项目中:

    repositories {
        maven {
            url 'https://www.jitpack.io'
        }
    }
    
    dependencies {
        compile 'com.github.Pygmalion69:Gauge:1.1'
    }
    
    repositories {
        maven {
            url 'https://www.jitpack.io'
        }
    }
    
    dependencies {
    implementation 'com.jignesh13.speedometer:speedometer:1.0.0'
    }
    
    视图是用XML声明的:

    <de.nitri.gauge.Gauge
        android:id="@+id/gauge1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:layout_weight="0.75"
        gauge:labelTextSize="42"
        gauge:maxValue="1000"
        gauge:minValue="0"
        gauge:totalNicks="120"
        gauge:valuePerNick="10"
        gauge:upperText="Qty"
        gauge:lowerText="@string/per_minute" />
    
    
    
    非常感谢您为我节省时间..!这些视图仍然有效?我在使用它时遇到以下错误:android.content.res.BridgeResources.getString(BridgeResources.java:501)上的java.lang.NullPointerException(java.NullPointerException),org.codeandmagic.android.gauge.GaugeView.readAttrs上的getString(Context.java:334)(GaugeView.java:224)在org.codeandmagic.android.gauge.GaugeView。(GaugeView.java:170)在org.codeandmagic.android.gauge.GaugeView.(GaugeView.java:175)在………太棒了。你如何自定义它?比如设置不同的针样式?它不是为gradle配置的。现在如何在android项目中使用它?很好的库,但我没有