没有怎么系统的学习过Android 所以现在自己写Demo的时候用到了什么就看看什么,感觉学的好乱····(今天的风真是喧嚣~)
嗯 今天看了看自定义控件 虽然对我来说感觉十分高大上···(说白了 我没看懂···~!!!!)
算了 一把辛酸泪 本来想写一个控件显示坐标系(并且能显示方程的图形)
于是乎:
该怎么显示一个坐标系?
该如何画出图形?
嗯哼~ 显示坐标系 也就是在空间中画一个坐标系(画两条线呗)
翻一翻怎么绘制(百度什么的很多)
Paint Canvas Bitmap…… (一脸囧 WTF )
简单说Paint 是画笔 Canvas 是把画布裱起来的 Bitmap 是画布
也就是说 我们用Paint 在Bitmap上画图然后放到Canvas中(嗯 我的理解是这样···有错误请指出感激不尽~)
百度的也看了 思路也有了 我们需要在一个View上画出 坐标系和方程
GoGOGo
先继承了一个View
public class Demo2 extends View { public Demo2(Context context) { super(context); } public Demo2(Context context, AttributeSet attrs) { super(context, attrs); } public Demo2(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } }
然后呢··=。= 嗯嗯 我们先画一下试试
复写onDraw()方法
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint mPaint = new Paint(); mPaint.setColor(Color.BLUE); canvas.drawColor(Color.WHITE); canvas.drawLine(0,0,500,500,mPaint); } 先简单的画一下从(0,0) (500,500)的一条直线我们会发现Android中 画图机制的 (0,0)点在左上角如图(QWQ 灵魂级画师)
那么我们的坐标轴应该画呢(T.T)先拿到View的大小然后(0,0)点应该在中间 画x y 轴
/** * 测量 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); w = MeasureSpec.getSize(widthMeasureSpec); h =MeasureSpec.getSize(heightMeasureSpec); }在绘制图形之前 需要先进行测量 在测量的时候就可以拿到View的大小了(Get)其实呢 有个错误的示范就是一开始 我 写的是
w=widthMeasureSpec
h=heightMeasureSpec
结果发现 w = 2147482923(我看到之后就懵了)
后来查了下 这里的widthMeasureSpec 是 窗口的大小+MeasureSpec类中的specMode的值
好了 继续画坐标轴
在onDrow方法中写
//x y 坐标系 canvas.drawLine(w/2,50,w/2,h-50,mPaint); canvas.drawLine(50,h/2,w-50,h/2,mPaint); T.T到这里 应该也算画了一个坐标轴(2条垂直线???)
方程呢···
就去x轴上的坐标然后根据方程 算出y的坐标 一个个画点(不要问为什么是点而不是线 因为我不会=。= 这里就不贴代码了 )
你好~自定义控件 第一次见面狠不开心 这里小白~ 欢迎指出不足
