当前位置:   article > 正文

自适应布局的折线图,柱状图以及天气预报折线图_一周天气预报折线统计图

一周天气预报折线统计图

SmartChart

本项目是个人开发所用的一套常用框架,里面包含OkHttp的网络请求封装、tablayout的自定义,SmartRefreshlayout下拉上拉,activity右滑退出,以及各种布局回弹效果和android的版本适配(这些不是主要目的,主要。。。请看下面)。

这里主要介绍近期项目所需的表格和折线以及二维表格,有需求的同学可以不妨借鉴 。

示例

二维表格

一周以及24小时天气预报(24小时天气变化用的hellcharts所写,7天天气预报是自定义view )

折线图和柱状图

项目中的柱状图和折线图集成的是hellocharts-android的核心代码,在此基础上增加一些修改。

增加特性说明:

  • X轴Y轴的标题样式和旋转角度
  • 增加label的设置方法
  • 解决scrollview的滑动冲突

冲突代码:

 view.setOnTouchListener(new View.OnTouchListener() {
            float ratio = 1.2f; //水平和竖直方向滑动的灵敏度,偏大是水平方向灵敏
            float x0 = 0f;
            float y0 = 0f;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        x0 = event.getX();
                        y0 = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        float dx = Math.abs(event.getX() - x0);
                        float dy = Math.abs(event.getY() - y0);
                        x0 = event.getX();
                        y0 = event.getY();
                        scrollView.requestDisallowInterceptTouchEvent(dx * ratio > dy);
                        break;
                }
                return false;
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

二维表格

使用说明:

开发者只需要关心中间content部分的adapter怎么写,其余的表头部分只需要将数据传进去就可以了,剩下的数据填充及同步滑动部分将由本库自动完成。
而且表头和下放列表的宽度是自动适应大小,取决于content部分的item的宽度。右侧上下左右滑动的列表随着list集合的增加而向右动态添加。同时支持
下拉刷新。(待完善:左边不动两个列表也要做成动态添加)

APIs:

  /**
     * 设置表的标题
     */
    public void setTitle(String title);

    /**
     * 设置表标题的背景
     */
    public void setTitleBackgroundResource(int resourceId);

    /**
     * 设置表头的宽度
     */
    public void setTitleWidth(int titleWidth) ;

    /**
     * 设置表头的高度
     */
    public void setTitleHeight(int titleHeight);

    /**
     * 设置横向表头的标题
     */
    public void setRowDataList(List<String> rowDataList);

    /**
     * 设置纵向表头的内容
     */
    public void setColumnDataList(List<String> columnDataList);

    /**
     * 横向表头的分割线
     */
    public void setRowDivider(Drawable rowDivider) ;

    /**
     * 纵向表头的分割线
     */
    public void setColumnDivider(Drawable columnDivider);

    /**
     * 设置纵向表头的背景色
     * 颜色格式如:#607D8B(String)
     * 下同
     */
    public void setColumnColor(String columnColor);

    /**
     * 设置标题的背景色
     */
    public void setTitleColor(String titleColor);

    /**
     * 设置横向表头的背景色
     */
    public void setRowColor(String rowColor) ;

    /**
     * 设置纵向表头的适配器
     */
    public void setColumnAdapter(BaseAdapter columnAdapter);

    /**
     * 设置content的初始position
     * 比如你想进入这个Activity的时候让第300条数据显示在屏幕上(前提是该数据存在)
     */
    public void setInitPosition(int initPosition);

    /**
     * 返回中间内容部分的ListView
     */
    public ListView getContentListView();

    /**
     * 返回左边表头的ListView
     */
    public ListView getColumnListView() ;

    /**
     * 返回上访表头的最外层布局
     */
    public LinearLayout getRowLayout();

    /**
     * 设置是否开启下拉刷新(默认关闭)
     */
    public void setSwipeRefreshEnabled(boolean bool);

    /**
     * 设置监听
     */
    public void setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener) ;

    /**
     * 返回下拉刷新控件
     */
    public SwipeRefreshLayout getSwipeRefreshLayout();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

源码地址

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/208754?site
推荐阅读
相关标签
  

闽ICP备14008679号