你好,自定义控件

没有怎么系统的学习过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的坐标  一个个画点(不要问为什么是点而不是线   因为我不会=。=  这里就不贴代码了   )

你好~自定义控件  第一次见面狠不开心   这里小白~  欢迎指出不足

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值