Android Studio使用Kotlin实现MPAndroidChart中一页多图

准备工作
在github上,下载MPAndroidChart文件(https://github.com/PhilJay/MPAndroidChart),里面包含库和Example,库这里不用管,我们就参考Example即可。
构建空文件之后,在setting.gradle中repositories括号内,添加

maven { url 'https://jitpack.io' }    // MPAndroidChart库

在build.gradle(:app)中,添加

implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'     // MPAndroidChart库

1、AndroidManifest.xml文件
没有什么特别的,可以在原有基础上修改或添加如下两句,不影响运行。

android:allowBackup="false"
android:hardwareAccelerated="true"

2、layout文件
使用ListView控件

   <ListView
       android:id="@+id/listView1"
       android:layout_width="match_parent"
       android:layout_height="match_parent" >
   </ListView>

除此之外,还需要添加三个文件,分别是‘list_item_linechart’,‘list_item_piechart’和‘list_item_barchart’,这个是之后放在ListView的控件,这里直接把MPAndroidChartExample工程里的文件放在自己工程的layout文件夹就可以了。

3、字体文件
建立文件夹C:\Users\liuhe\AndroidStudioProjects\FFTAnalyzer\app\src\main\assets。
这个里面方字体文件OpenSans-Regular.ttf,可以直接从MPAndroidChartExample工程里拷贝即可。这玩意不整,程序完事了会闪退。

4、绘图类文件
这里在左侧工程栏的android视图下,找到java/com.example.xxx,右键,新建-package,com.example.xxx.chart。由于Kotlin无缝支持Java,所以可以把需要的绘图类文件放在这里,直接将MPAndroidChart-master\MPChartExample\src\main\java\com\xxmassdeveloper\mpchartexample\listviewitems中的所有文件拷贝。这里需要说明的是,前面已经包含了MPAndroidChart库文件,这里包含的是类似MPAndroidChartExample工程里的辅助类文件。

需要修改的地方有,记得把拷贝过来java文件的头package修改了,然后三个Item文件中关于R的import改正确。这样,就可以开始修改主Activity文件了。

4、主Activity文件
相关的文件在MPAndroidChartExample中的ListViewMultiChartActivity.java文件下,我们从这里拷贝一些语句即可。因为Android Studio支持Java自动转化为Kotlin语言,所以方便了很多。

我们需要的函数或类主要是,ChartDataAdapter、generateDataLine、generateDataBar以及generateDataPie,一键拷贝,自动转化为Kotlin。

有一个报错

entries.add(BarEntry(i, (Math.random() * 70).toInt() + 30))

修改为如下即可

entries.add(BarEntry(i.toFloat(), ((Math.random() * 70).toInt() + 30).toFloat()))

最后把onCreate修一修

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 阻止屏幕休眠
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        // 全屏,隐藏状态栏
        window.setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN)
        // 隐藏标题栏,必须放在getWindow之后
        supportActionBar?.hide()

        //
        val lv: ListView = findViewById(R.id.listView1)

        val list: ArrayList<ChartItem> = ArrayList<ChartItem>()

        list.add(LineChartItem(generateDataLine(1), applicationContext))
        list.add(LineChartItem(generateDataLine(2), applicationContext))
		   //加就完了
		    
        val cda = ChartDataAdapter(applicationContext, list)
        lv.adapter = cda

    }

运行
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obotisr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值