EIT框架_接口
来源:互联网 发布:海康sadp软件下载 编辑:程序博客网 时间:2024/04/26 01:37
情况一:
① IDraw Interface
public interface IDraw {void doDraw(Canvas canvas);}② GraphView extends View
public class GraphView extends View{ private IDraw fgDrawer;public GraphView(Context context) {super(context); fgDrawer=(IDraw)context;//(interface)context什么来的?}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);this.drawBackground(canvas);fgDrawer.doDraw(canvas);//##关键语句##}protected void drawBackground(Canvas canvas) { canvas.drawColor(Color.WHITE);}}
③ myView extends GraphView
public class myView extends GraphView { private Bitmap bmp; private Paint paint=new Paint();public myView(Context context,Bitmap bitmap) {super(context);bmp=bitmap;}//覆写父类GraphView的drawBackground方法而已//父类在onDraw中调用了,所以在mainActivity中不见mv.drawBackground这样调用@Overrideprotected void drawBackground(Canvas canvas) {super.drawBackground(canvas);canvas.drawBitmap(bmp, 0,0, paint);}}
public class MainActivity extends Activity implements IDraw { private GraphView mv; private Paint paint=new Paint(); private Bitmap bmp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);bmp=BitmapFactory.decodeResource(getResources(), R.drawable.purple);mv=new myView(this,bmp);LinearLayout layout=new LinearLayout(this);LayoutParams lp=new LayoutParams(250,250);lp.topMargin=10;lp.leftMargin=10;layout.addView(mv,lp);setContentView(layout);}@Overridepublic void doDraw(Canvas canvas) {//画机器人paint.setAntiAlias(true);RectF rectF=new RectF(80,110,180,180);paint.setColor(Color.GREEN);canvas.drawArc(rectF, 220, 180, true, paint);paint.setStrokeWidth(3);canvas.drawLine(135, 120, 140, 75, paint);canvas.drawLine(160, 140, 210, 130, paint);paint.setColor(Color.WHITE);canvas.drawCircle(128, 125, 6, paint);canvas.drawCircle(162, 145, 6, paint);}}
⑤截图:
总结:这里所谓的框架就是GraphView这个类。 View->GraphView->myView,中间的GraphView就是我们的框架。
关键点一:GraphView中有句(IDraw)fgDrawer.doDraw(),然后在mainActivity中implements IDraw去实现具体内容,这块类似回调函数。
关键点二:myView覆写了GraphView中的drawBackground(),具体见注释。
-----------------------------------------
情况二:
① IDraw 接口
public interface IDraw { void doDraw(Canvas canvas);}② GraphView
public class GraphView extends View { private IDraw fgDrawer;//##关键语句##public GraphView(Context context) {super(context);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);this.drawBackground(canvas);fgDrawer.doDraw(canvas);} protected void drawBackground(Canvas canvas){ canvas.drawColor(Color.GRAY); } public void setForegroundDrawer(IDraw fgd){ fgDrawer=fgd;//##关键语句## }}
③ mainActivity.class
public class MainActivity extends Activity { private GraphView mv=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LinearLayout layout=new LinearLayout(this);LayoutParams lp=new LayoutParams(250,280);lp.topMargin=10;lp.leftMargin=10;mv=new GraphView(this);layout.addView(mv,lp);mv.setForegroundDrawer(new myDrawing_IDraw());//##关键语句##setContentView(layout);}public class myDrawing_IDraw implements IDraw{ private Paint paint;public myDrawing_IDraw(){paint=new Paint();}@Overridepublic void doDraw(Canvas canvas) { //画机器人 paint.setAntiAlias(true); RectF rectF=new RectF(80,110,180,180); paint.setColor(Color.GREEN); canvas.drawArc(rectF, 220, 180, true, paint); paint.setStrokeWidth(3); canvas.drawLine(135, 120, 140, 75, paint); canvas.drawLine(160, 140, 210, 130, paint); paint.setColor(Color.WHITE); canvas.drawCircle(128, 125, 6, paint); canvas.drawCircle(162, 145, 6, paint);}}}
④截图:
总结: 标准的Button--onClickListener类型,回调函数形式。
0 0
- EIT框架_接口
- IT架构师_隽语集(EIT造形 _0501)
- IT架构设计_隽语集(EIT设计模式_0701)
- Java集合框架_二_Iterator接口
- Java集合框架_三_Collection接口
- 架构设计EIT造型下的android框架(一)
- 架构设计EIT造型下的android框架(二)
- 集合框架_泛型接口的概述和使用
- IT架构设计_隽语集(EIT設計模式_0601)
- DVB-EIT
- eit造型
- 創新組合型的架構設計(Part-6a):以EIT造形来思考框架设计
- 软件设计_接口_中间层
- 软件设计_接口_中间层
- 软件设计_接口_中间层
- EIT段分析
- EIT事件信息表
- EIT造型初探
- JS动态操作select下列框
- js中的json对象和字符串之间的转化
- Fedora20启动和关闭防火墙、禁用防火墙
- 11.1 重构函数式程序
- kernel barrier详解
- EIT框架_接口
- Android开源项目分类汇总
- 深入游戏引擎
- Vivado开发工具熟悉
- ID3算法的原理及实现(Python)
- Android中RelativeLayout各个属性的含义
- 做好有价值的伪原创是站长以不变应万变的上策
- 斯坦福大学公开课 :机器学习课程(Andrew Ng)——9、无监督学习:K-means Clustering Algorithm
- Robotium API 翻译(一)——click/clickLong操作