[Android_Develop]将自定义View里的属性实时传递出来
2018-01-23 00:36
441 查看
将自定义View里的属性实时传递出来
1、在你的自定义View里创建一个接口。public interface GetRGBListener{ void onRGBChanged(int red,int green,int blue); }
2、类成员变量里声明一个这个接口的引用。
GetRGBListener getRGBListener;
3、写一个方法获取并持有Activity实现的接口的实例
public void setRGBColor(GetRGBListener getRGBListener){ this.getRGBListener = getRGBListener; }
4、在Activity里实现这个接口,可以看到,这里使用了自定义View的RGB值
/** * 圆环控件接口实现,获取圆环中的数据,并设置背景实时改变 */ private RotateCircle.GetRGBListener getRGBListener = new RotateCircle.GetRGBListener() { @Override public void onRGBChanged(int red, int green, int blue) { getCircleRGB(selected,red,green,blue); setBgColor(red,green,blue,bg); } };
5、Activity里绑定XML里的自定义View属性,并向XML创建的自定义View对象传递Activity实现的接口对象。
@Bind(R.id.island_atmo_circle) RotateCircle rotateCircle; @Override protected void initView() { super.initView(); rotateCircle.setRGBColor(getRGBListener); }
这样,你就可以实时获取自定义View的属性值,自定义View完整代码如下:
public class RotateCircle extends AppCompatImageView {
public RotateCircle(Context context) {
super(context);
init();
}
public RotateCircle(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public RotateCircle(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
invalidate();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://手指按下
return true;
case MotionEvent.ACTION_MOVE://手指移动
int r = Color.red(color);
int g = Color.green(color);
int b = Color.blue(color);
getRGBListener.onRGBChanged(r,g,b);
invalidate();
}
case MotionEvent.ACTION_UP://手指离开
break;
default:
break;
}
return super.onTouchEvent(event);
}
public interface GetRGBListener{ void onRGBChanged(int red,int green,int blue); }
public void setRGBColor(GetRGBListener getRGBListener){ this.getRGBListener = getRGBListener; }
}
相关文章推荐
- [Android_Develop]自定义View添加XML属性
- androidの自定义view属性资源
- Android笔记之View XML属性自定义
- 【Android】android自定义View以及属性的实现(2)
- Android 自定义View并添加属性(转)
- Android自定义View以及layout属性全攻略
- Android中View自定义XML属性详解以及R.attr与R.styleable的区别
- Android 自定义View并添加属性
- android中如何使用自定义view,自定义控件属性,及动态自定义控件
- Android_自定义View---三种事件的触发、自定义View属性
- Android自定义view之属性动画初见
- Android 自定义View自定义属性的声明
- Android自定义属性以及组合View
- Android自定义View传递参数
- Android 自定义View并添加属性
- 【android 开发知识积累】——属性(Attribute)资源的使用和自定义View组件
- Android 自定义View - Paint属性大全
- Android 自定义View自定义属性的声明
- Android自定义View构造函数、自定义属性详解
- Android中的自定义view和自定义属性TypedArray的使用