Android UI开发 View自绘控件 分享

2016-02-19 09:43 0 1 收藏

下面图老师小编跟大家分享一个简单易学的Android UI开发 View自绘控件 分享教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

 很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制。

  首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件 Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方法,对于相关的按键可以重载onKeyDown、onKeyUp以及onTouchEvent等,下面android开发网就以一个实例来表示。
代码如下:

  public class cwjView extendsView

  {

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  public cwjView(Context context)

  {

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  this(context,null);

  }

  public cwjView(Context context,AttributeSet attrs)

  {

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  this(context,attrs,0);

  }

public cwjView(Context context,AttributeSet attrs,int defStyle)

  {

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  super(context,attrs,defStyle);

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  //这里是本类的构造,相关初始化可以在这里添加代码

  }

  @Override

  protectd void onDraw(Canvas canvas)

  {

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  super(canvas);

  //绘图的关键,可以看到已经包含了一个canvas句柄,可以直接通过我们前面讲到的Canvas类进行相关的操作,完整的例子,大家可以参考Android SDK中例子Snake贪食蛇游戏的实现。

  }

  }

  有关View类的更新,我们直接通过调用invalidate(int l,int r,int r,int b)来更新一个Rect矩形区域,或更新全部,同时在线程中我们使用需要调用postInvalidate来更新界面。

来源:https://www.tulaoshi.com/n/20160219/1591832.html

延伸阅读
自绘对话框 作者:Alon 下载示例源代码 闲来无事,写了一个简单的对话框界面,希望给需要的朋友有所帮助。 界面如下: 界面很单调,我只是想说明一下如何实现界面的自绘。如果有需要,也可以绘制更复杂漂亮的界面。 程序的实现也不复杂,接下来就跟着我一步一步做。...
自绘按钮的实现 作者:杜修杏 下载本文示例工程 如果你希望能够在自己的程序中表现出新意,那么你一定不会仅仅满足于MFC提供那些标准控件。这时,我们就必须自己另外多做些工作了。就改变控件外观这一点来说,主要是利用控件的自绘功能(Owner Draw)实现的。本篇将和各位一起定义一个XP风格的...
在做android开发时有这样一个需求,我们需要把地图的zoomcontroller放置于地图的右下角。 默认情况下,我们在eclipse中拖动控件到editor中,控件的位置将位于整个屏幕的左上角。可以使用 android:layout_gravity、android:gravity和android:width三个属性值,实现控件的九宫格定位。 Xml代码 代码如下: ZoomControls android...
/* 1 ( 最快 ) */ for (int i = initializer; i = 0; i--) { ... } /* 2 第二 */ int limit = calculateLoopLimit(); for (int i = 0; i limit; i++) { ... } /* 3 */ Type[] array = getMyArray(); for (Type obj : array) { ... } /* 4 */ for (int i = 0; i array.length; i++) { ... } /* 5 */ for (int i = 0; i this.var; i+...
首先下载 android SDK 最新版。不过最新版的 SDK 已经明确声明“The Android SDK archive now only contains the tools. It no longer comes populated with a specific Android platform or Google add-on. Instead you use the SDK Manager to install or update SDK components such as platforms,tools, add-ons, and documentation.”,所...

经验教程

509

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部