android自定义view的参数传递问题 30
我想自定义一个view,调用ondraw方法画一些点和线,并把这个自定义view添加到xml布局文件中。画点和线的坐标是由参数传递过来的,怎么实现从activity传参数...
我想自定义一个view,调用ondraw方法画一些点和线,并把这个自定义view添加到xml布局文件中。
画点和线的坐标是由参数传递过来的,怎么实现从activity传参数到myview中,然后把view显示出来?
我自己的想法是把myview的构造函数写成
public MyView(Context context, int x, int y) {
super(context);
x = this.x;
y = this.y;
}
在ondraw方法中
canvas.drawPoint(x, y, paint);
这样做并没有成功,不知道是方法不对还是哪里出了问题,希望大神能解决。 展开
画点和线的坐标是由参数传递过来的,怎么实现从activity传参数到myview中,然后把view显示出来?
我自己的想法是把myview的构造函数写成
public MyView(Context context, int x, int y) {
super(context);
x = this.x;
y = this.y;
}
在ondraw方法中
canvas.drawPoint(x, y, paint);
这样做并没有成功,不知道是方法不对还是哪里出了问题,希望大神能解决。 展开
5个回答
展开全部
android自定义view的参数传递,自定义View细分一下,分为两种
1) 自定义ViewGroup
2) 自定义View
其实ViewGroup最终还是继承之View,当然它内部做了许多操作;继承之ViewGroup的View我们一般称之为容器,而今天我们不讲这方面,后续有机会再讲。
来看看自定义View 需要掌握的几点,主要就是两点
一、重写 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {}方法。
二、重写 protected void onDraw(Canvas canvas) {}方法
空讲理论很难理解,还得用例子来说明, Android 微信6.1 tab栏图标和字体颜色渐变的实现 的博客,里面tab的每个item就是通过自定义View来实现的,那么接下来就通过此例子来说明问题。
把View理解为一张白纸,而自定义View就是在这张白纸上画上我们自己绘制的图案,可以在绘制任何图案,也可以在白纸的任何位置绘制,那么问题来了,白纸哪里来?图案哪里来?位置如何计算?
a)白纸好说,只要继承之View,在onDraw(Canvas canvas)中的canvas就是平常规裁军所说的白纸
/**
* Created by moon.zhong on 2015/2/13.
*/
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
1) 自定义ViewGroup
2) 自定义View
其实ViewGroup最终还是继承之View,当然它内部做了许多操作;继承之ViewGroup的View我们一般称之为容器,而今天我们不讲这方面,后续有机会再讲。
来看看自定义View 需要掌握的几点,主要就是两点
一、重写 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {}方法。
二、重写 protected void onDraw(Canvas canvas) {}方法
空讲理论很难理解,还得用例子来说明, Android 微信6.1 tab栏图标和字体颜色渐变的实现 的博客,里面tab的每个item就是通过自定义View来实现的,那么接下来就通过此例子来说明问题。
把View理解为一张白纸,而自定义View就是在这张白纸上画上我们自己绘制的图案,可以在绘制任何图案,也可以在白纸的任何位置绘制,那么问题来了,白纸哪里来?图案哪里来?位置如何计算?
a)白纸好说,只要继承之View,在onDraw(Canvas canvas)中的canvas就是平常规裁军所说的白纸
/**
* Created by moon.zhong on 2015/2/13.
*/
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
展开全部
view 也是个类,里边定义一些方法,传递你需要的参数,例如public void refresh(int x, int y ) 你最开始的时候初始化后,就可以直接用这个实例调用refresh方法了,最后别忘了调用 postInvalidate()或Invalidate()方法刷新view
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
view 也是个类,里边定义一些方法,传递你需要的参数,例如public void refresh(int x, int y
)
你最开始的时候初始化后,就可以直接用这个实例调用refresh方法了,最后别忘了调用
postInvalidate()或Invalidate()方法刷新view
)
你最开始的时候初始化后,就可以直接用这个实例调用refresh方法了,最后别忘了调用
postInvalidate()或Invalidate()方法刷新view
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
view 也是个类,里边定义一些方法,传递你需要的参数,例如public void refresh(int x, int y
)
你最开始的时候初始化后,就可以直接用这个实例调用refresh方法了,最后别忘了调用
postInvalidate()或Invalidate()方法刷新view
)
你最开始的时候初始化后,就可以直接用这个实例调用refresh方法了,最后别忘了调用
postInvalidate()或Invalidate()方法刷新view
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自定义view传递参数一般都是通过构造方法进行传递。
即:MyView view = new MyView(参数1,参数2,参数3,……)
即:MyView view = new MyView(参数1,参数2,参数3,……)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询