public class LineChartUtils  {    private static final String TAG = "LineChartUtils";    private final FormatUtils formatUtils;    private LineChart lineChart;    private Handler mHandler = new Handler();    private Context mContext;    Runnable hideHighLight = new Runnable() {        @Override        public void run() {        lineChart.highlightValue(null);        }    };    public LineChartUtils(LineChart lineChart,Context context){        this.lineChart = lineChart;        this.mContext = context;        formatUtils = new FormatUtils();        initSetting();    }    /**     * 常用设置     */    private void initSetting() {        lineChart.getDescription().setText("");        lineChart.getDescription().setTextColor(Color.RED);        lineChart.getDescription().setTextSize(16);//设置描述的文字 ,颜色 大小        lineChart.setNoDataText("无数据噢"); //没数据的时候显示        lineChart.setDrawBorders(false);//是否显示边框        lineChart.animateX(500);//x轴动画        lineChart.setTouchEnabled(true); // 设置是否可以触摸        lineChart.setDragEnabled(true);// 是否可以拖拽        lineChart.setScaleEnabled(false);// 是否可以缩放 x和y轴, 默认是true        lineChart.setScaleXEnabled(true); //是否可以缩放 仅x轴        lineChart.setScaleYEnabled(true); //是否可以缩放 仅y轴        lineChart.setPinchZoom(true);  //设置x轴和y轴能否同时缩放。默认是否        lineChart.setDoubleTapToZoomEnabled(true);//设置是否可以通过双击屏幕放大图表。默认是true        lineChart.setHighlightPerDragEnabled(true);//能否拖拽高亮线(数据点与坐标的提示线),默认是true        lineChart.setDragDecelerationEnabled(true);//拖拽滚动时,手放开是否会持续滚动,默认是true(false是拖到哪是哪,true拖拽之后还会有缓冲)        lineChart.setDragDecelerationFrictionCoef(0.99f);//与上面那个属性配合,持续滚动时的速度快慢,[0,1) 0代表立即停止        //通过选中监听,来实现不点击图表后3秒,定位线自动消失        lineChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {            @Override            public void onValueSelected(Entry e, Highlight h) {                mHandler.removeCallbacks(hideHighLight);                mHandler.postDelayed(hideHighLight,3000);            }            @Override            public void onNothingSelected() {            }        });        //设置markerview        MyMarkerView myMarkerView=new MyMarkerView(mContext, R.layout.custom_marker_view);        myMarkerView.setChartView(lineChart);        lineChart.setMarker(myMarkerView);        //设置X轴        XAxis xAxis = lineChart.getXAxis();        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置x轴位置        xAxis.setAxisMinimum(1);//设置x轴最小//        xAxis.setAxisMaximum(12);//设置x轴最大值        xAxis.setTextSize(14);        xAxis.setTextColor(Color.RED);        xAxis.setEnabled(true);//是否显示x轴是否禁用        xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值        xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线        xAxis.enableGridDashedLine(2,2,2); //竖线 虚线样式  lineLength控制虚线段的长度 spaceLength控制线之间的空间        xAxis.setLabelRotationAngle(30f);//设置x轴标签的旋转角度        xAxis.setValueFormatter(new IAxisValueFormatter() { //设置x轴文字样式            @Override            public String getFormattedValue(float value, AxisBase axis) {                //x轴上显示时间                String numInt = formatUtils.getCurrentMinute();                return numInt;            }        });        //设置Y轴        YAxis yAxisLef = lineChart.getAxisLeft();        yAxisLef.setTextSize(14);        yAxisLef.setAxisMinimum(0);        YAxis yAxisRight = lineChart.getAxisRight();//获取右侧y轴        yAxisRight.setEnabled(false);//设置是否禁止    }    public void setLineChartData(List yValue){        LineDataSet lineDataSet = new LineDataSet(yValue,"股票走势折线");        lineDataSet.setHighLightColor(Color.RED); //设置高亮线的颜色        lineDataSet.setColor(Color.BLACK);//设置折线颜色        lineDataSet.setCircleColor(Color.BLUE);//设置交点的圆圈的颜色        lineDataSet.setDrawCircles(false);//设置是否显示交点        lineDataSet.setDrawValues(true); //设置是否显示交点处的数值        lineDataSet.setValueTextColor(Color.RED); //设置交点上值的颜色        lineDataSet.setValueTextSize(14);//设置交点上值的字体大小//        lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);// 设置平滑曲线        //设置折线上显示数据的格式        lineDataSet.setValueFormatter(new IValueFormatter() {            @Override            public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {                String numOfTwo = formatUtils.getNumOfTwo(value);                return numOfTwo;            }        });        LineData lineData = new LineData(lineDataSet);        lineChart.setData(lineData);    }    class MyMarkerView extends MarkerView{        TextView marker_view_tv;        public MyMarkerView(Context context, int layoutResource) {            super(context, layoutResource);            marker_view_tv = (TextView) findViewById(R.id.marker_view_tv);        }        //获取最新点击坐标点的值的回调        @Override        public void refreshContent(Entry e, Highlight highlight) {            String val = e.getY()+"\n"+e.getX();            marker_view_tv.setText(val);            super.refreshContent(e, highlight);        }        @Override        public MPPointF getOffsetForDrawingAtPoint(float posX, float posY) {            return super.getOffsetForDrawingAtPoint(posX, posY);        }        //设置显示的偏移量,显示在定位线的正上方        @Override        public MPPointF getOffset() {            int measuredHeight = marker_view_tv.getMeasuredHeight();            int measuredWidth = marker_view_tv.getMeasuredWidth();            return new MPPointF(-measuredWidth/2,-measuredHeight);        }    }}

Activity中使用的时候

@Override    public void initData() {        ArrayList entries = new ArrayList();        Random random = new Random(10);        for (int i =1;i<20;i++){            float v = random.nextFloat();            entries.add(new Entry(i,v));        }        lineChartUtils.setLineChartData(entries);    }

更多相关文章

  1. Android(安卓)ProgressDialog的使用
  2. Android为Notification加上一个进度条
  3. Android(安卓)动态隐藏显示导航栏,状态栏
  4. Android设置全屏的两种方法
  5. Android(安卓)使用decodeFile方法加载手机磁盘中的图片文件
  6. DialogFragment设置自定义动画
  7. Android(安卓)Recyclerview设置条目属性动画
  8. android 录音
  9. android GridView 只显示一行,可以左右滑动

随机推荐

  1. android 新增一個廣播偵聽USB設備的插拔
  2. Android中Toast的用法简介(转)
  3. Android M 指纹框架
  4. Android编译系统入门(二)
  5. android shape用法(xml文件)
  6. 从零开始学android开发-adt-bundle-eclip
  7. android材料设计语言
  8. android 调用js中的方法
  9. Android 应用启动闪白一下处理方法
  10. 2011.07.06——— android 安装apiDemos