Android UI开发 View自绘控件 分享

2016-02-19 09:43 3 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

  {

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

  public cwjView(Context context)

  {

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

  this(context,null);

  }

  public cwjView(Context context,AttributeSet attrs)

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

  {

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

  this(context,attrs,0);

  }

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

  {

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

  super(context,attrs,defStyle);

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

  }

  @Override

  protectd void onDraw(Canvas canvas)

  {

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

  super(canvas);

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

  }

  }

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

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

延伸阅读
UILabel的使用 一、初始化 代码如下: UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];      [self.view addSubview:myLabel]; 二、设置文字  ①、设置默认文本 代码如下: NSString *text = @"标签文本"; myLabel.text = text; 效果: ②、设置标签文本(此属性是...
Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 Android程序中可以...
.NET中的自绘机制 原著:Dino Esposito 翻译:Abbey 原文出处:MSDN Magazine Feb 2004(Cutting Edge) 原代码下载:CuttingEdge0402.exe (182KB) 每次 Microsoft 推出象 Office 或者 Visual Studio 这样拳头产品的新版本时,都会推出一些...
在做android开发时有这样一个需求,我们需要把地图的zoomcontroller放置于地图的右下角。 默认情况下,我们在eclipse中拖动控件到editor中,控件的位置将位于整个屏幕的左上角。可以使用 android:layout_gravity、android:gravity和android:width三个属性值,实现控件的九宫格定位。 Xml代码 代码如下: ZoomControls android...
Android绘图操作,通过继承View实现,在onDraw函数中实现绘图。 下面是一个简单的例子: 代码如下: public class AndroidTest extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {   ...

经验教程

439

收藏

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