首页 > 代码库 > 自定义界面之圆-自定义属性回调接口
自定义界面之圆-自定义属性回调接口
* 做Android应用开发想深入的话 就是要会使用一些高级控件,以及自定义View了,好吧,开始自定义view走向大神之路,这一节从最简单的
* 圆形view开始,如何定义属性,以及回调使用。
下面是实现代码
/** * 一个圆形的进度条控件 * @author fengy * */ public class CustomProgressView extends View { Paint paint ; int mColor;//圆的颜色 private OnClickProgressViewListener mclickProgressView; public CustomProgressView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub paint = new Paint(); TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.customprogress); mColor = typedArray.getColor(R.styleable.customprogress_color, Color.RED); typedArray.recycle(); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //画最外层的圆 paint.setColor(mColor); paint.setStyle(Style.STROKE); canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth()/2, paint); } public void setLisner(OnClickProgressViewListener pOnClickProgressView) { mclickProgressView = pOnClickProgressView; } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if (event.getAction()==MotionEvent.ACTION_UP) { mclickProgressView.onClick(CustomProgressView.this); } return super.onTouchEvent(event); } /* * 暴露接口 作为回调使用 * */ public interface OnClickProgressViewListener { public void onClick(CustomProgressView v); } }为什么使用回调呢,目的是为了view 的通用性,业务逻辑让使用者去实现。
有两种方法使用回调第一种
CustomProgressView cView = (CustomProgressView) rootView.findViewById(R.id.cv); cView.setLisner(new OnClickProgressViewListener() { @Override public void onClick(CustomProgressView v) { // TODO Auto-generated method stub //dosomething } });
第二种让你的类实现 点击接口implements OnClickProgressViewListener 然后实现他的onclick方法,
谁用谁实现是不是非常简单呢,Android的view中都是使用的这种方式,就是牛逼的观察者模式。
自定义界面之圆-自定义属性回调接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。