android趋势图创建与使用

 之前项目需求里有一个需求是要根据每周的天气温度去绘制一个趋势图,这个图不基于XY坐标,就是一个单纯的趋势图,百度后看了一些博客,大体上有了一些思路,下面是整个趋势图的效果图:

最下面的点线图就是要做的效果。

下面贴出趋势图示例代码:

package com.example.testxyjar;

import utils.XYViewDrawBitmap;
import utils.XYViewDrawLine;
import utils.XYViewDrawPointer;
import utils.XYViewDrawText;
import view.XYView;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import bean.XYViewBitmapBean;
import bean.XYViewLineBean;
import bean.XYViewPointerBean;
import bean.XYViewTextBean;

public class MainActivity extends Activity {
    private XYView xyview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initCache();
        initView();
        initData();
    }

    private void initCache() {
    }

    private void initView() {
        xyview = (XYView) findViewById(R.id.main_page_view_xyview);

    }

    private void initData() {
        // 第一个点
        XYViewPointerBean xyPointer = new XYViewPointerBean();
        float data[] = { 10.0f, 20.0f, -10.0f, 40.0f, 20.0f, 50.0f };
        xyPointer.setData(data);
        xyPointer.setColor(Color.RED);
        xyPointer.setStrokeWidth(20.0f);
        XYViewDrawPointer xyViewDrawPointer = new XYViewDrawPointer(xyPointer);
        xyview.addXYViewDrawable(xyViewDrawPointer);
        // 画图
        XYViewBitmapBean xybitmap = new XYViewBitmapBean();
        float dataBitmap[] = { 10.0f, 20.0f, -10.0f, 40.0f, 20.0f, 50.0f };
        Drawable d = getResources().getDrawable(
                R.drawable.weather_temperature_point_icon_high);
        BitmapDrawable bd = (BitmapDrawable) d;
        Bitmap b = bd.getBitmap();
        Bitmap[] bs = { b, b, b, b, b, b };
        xybitmap.setY_away(40);
        xybitmap.setData(dataBitmap);
        xybitmap.setBitmapData(bs);
        XYViewDrawBitmap xyViewDrawBitmap = new XYViewDrawBitmap(xybitmap);
        xyview.addXYViewDrawable(xyViewDrawBitmap);
        // 第一个线
        XYViewLineBean xyLineBean = new XYViewLineBean();
        xyLineBean.setData(data);
        xyLineBean.setColor(Color.BLACK);
        xyLineBean.setStrokeWidth(2.0f);
        XYViewDrawLine xyViewLine = new XYViewDrawLine(xyLineBean);
        xyview.addXYViewDrawable(xyViewLine);
        //
        XYViewTextBean xyTexter = new XYViewTextBean();
        float dataText[] = { 10.0f, 20.0f, -10.0f, 40.0f, 20.0f, 50.0f };
        String [] dataStrs={"大娃","二娃","三娃","四娃","五娃","六娃"};
        xyTexter.setData(dataText);
        xyTexter.setColor(Color.RED);
        xyTexter.setStrokeWidth(1.0f);
        xyTexter.setTextSize(18.0f);
        xyTexter.setTextData(dataStrs);
        XYViewDrawText xyViewTexter = new XYViewDrawText(xyTexter);
        xyview.addXYViewDrawable(xyViewTexter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

代码中用到的jar包以上传到我的资源里,如有求要,请下载使用。

时间: 2024-08-30 12:59:13

android趋势图创建与使用的相关文章

android 趋势图

效果图 思路: 自定义视图继承View,在onDraw()函数中绘制点和线 获取视图的高度,将视图区分为指定的趋势值, 例如,我们的销售业绩从0-10,分为10个阶段,那么就用视图的高度/10,然后根据指定的状态数组来绘制点的位置,然后线连接点 趋势视图代码: public class LineView extends View { //点之间的距离    private int xUnit = 50; //视图的高度    private int height; //默认的趋势单位    pr

Android 常用效果(各种进度条,酷炫loading动画,火箭升空,撒花以及趋势图)

最近时间比较充裕一些,总结了下几个项目用到的ui效果,在这边共享给大家,也给自己做个记录(后面会有demo贴出). 主要是以下几种ui效果: 进度条多种展示 开源loading动画 火箭升空 撒花效果(仿微信) 气温趋势图 一.进度条 这边主要是有四种进度条展示,具体效果请往下看: 二.开源loading动画 这边有两种动画,来自于网上的开源demo,第一种是市场上app的比较常见动画,第二种是新版58的加载动画,具体效果请往下看: 三.火箭升空 这是在公司的一键清理项目中用到的一个动画,主要是

Android实现天气预报温度/气温折线趋势图

 Android实现天气预报温度/气温折线趋势图 天气预报的APP应用中,难免会遇到绘制天气温度/气温,等关于数据趋势的折线或者曲线图,这类关于气温/温度的折线图,一般会有两条线,一条是高温线,一条是低温线. 我之前介绍了一个Android平台上第三方开源框架的统计图表库MPAndroidChart(文章链接地址:http://blog.csdn.net/zhangphil/article/details/47656521 ),具体使用方法详情请看这篇文章. 现在基于Android平台上的M

android2.3 View视图框架源码分析之一:android是如何创建一个view的?

View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. 这一篇文章把所有的layout和widget都统称为view,那么android是如何创建一个view的呢? 一.在代码中直接new出来. 比如说你要创建一个TextView的实例,那么你可以这样写: Java代码   TextView text = new TextView(c);  //c为c

Android数据库之创建和升级数据库(中)

上一篇文章中,简单介绍了一下android数据库的一些基本概念,那么从本节开始,就实战一下Android数据库的创建和升级. 上文中,也介绍了,SQLiteOpenHelper是一个抽象类,是我们用来创建和升级数据库的最佳实践.下面直接以代码方式,演示一下数据库的创建操作. <span style="font-size:18px;">package com.happy.db.db; import android.content.Context; import android

Android studio 中创建AIDL Service

  1.概述  AIDL在android系统中的作用 AIDL,Android Interface definition language的缩写,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口.最近看了下AIDL在Android系统中的用法,在网上看到很多初学的朋友不太明白AIDL的实际作用,android提供了很多进程间通信的组件,像action.broadcast.contentprovide都可以实现进程间的通信,为什么还要用AIDL这个东西呢?我在a

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

【开源】专业K线绘制[K线主副图、趋势图、成交量、滚动、放大缩小、MACD、KDJ等)

这是最近一个iOS项目需要使用的K线的绘制,在网上大量查阅资料无果,只好自行绘制. 实时数据使用来源API: https://www.btc123.com/kline/klineapi 返回数据说明: 1.时间戳 2.开盘价 3.最高价 4.最低价 5.收盘价 6.成交量 实现功能包括K线主副图.趋势图.成交量.滚动.放大缩小.MACD.KDJ,长按显示辅助线等功能 预览图 最后的最后,这是项目的开源地址:https://github.com/yate1996/Y_KLine,如果帮到了你,麻烦

在Android Studio中创建项目和模拟器

北京电子科技学院 实      验      报      告 课程:移动平台应用开发实践  班级:201592  姓名:杨凤  学号:20159213 成绩:___________  指导老师:娄嘉鹏   实验日期 :2015.11.1 实验名称:           在Android Studio中创建项目和模拟器 实验内容:       1.在Android Studio中创建项目 2.创建并启动Android模拟器 一.实验简介 熟悉Android的开发环境.一些基本的操作技巧以及调试技