一直对类似股票曲线很感兴趣,今天有空实现了一个简单点的k线图,关键是要搞懂原点是相对那个,这个很重要,是以屏幕的原点为坐标原点还是以view的原点为坐标原点,除非是你的view没设置什么向左和向上的属性,画一张图方便理解
如果canvas相关的平移都不懂的话,建议去看看我上篇博客有讲,最好是自己动手去试试,这样才能理解的更深,
因为还要绘制刻度,所以要留点空间绘制刻度,我是直接写死了30px,没去使用paint获取文字的宽和高,嫌麻烦,还有就是给这个view设置padd值,因为绘制刻度的时候x,y最后一个刻度会被切掉一部分,我也是自己手动调试的,在实际项目中可不能这么干,直接贴代码吧,也没啥好说的,上面的理解了,看懂基本没啥问题
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.klineview.KLineView android:id="@+id/k_line_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20px" android:layout_marginLeft="10px" /> </RelativeLayout>自定义veiw
package com.klineview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.util.AttributeSet; import android.view.View; import java.util.List; /** * 绘制k线图 * Created by admin on 2016/12/8. */ public class KLineView extends View { private Paint paint; private Paint textPaint;//绘制文字画笔