在读API,我们可以发现J2ME中Canvas的repaint()与Android中 View的invalidate()/postInvalidate()方法实现了相同的功能(连说明文字几乎都一样…), 但是invalidate()/postInvalidate()两者却有着区别:invalidate()只能在UI这个线程里通过调用onDraw(Canvas canvas)来update屏幕显示,而postInvalidate()是要在non-UI线程里做同样的事情的。
<!--EndFragment-->
代码如下:
先创建入口类,其中定义一个
public class AndroidActivity extends Activity implements Config {
static BirdUI image;
static int id1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置当前Activity界面布局
setContentView(R.layout.main);
}
}
BirdUI类继承了ImageView,可以直接通过对象调用invalidate()/postInvalidate(),其中onDraw(Canvas canvas)是mageView的自己的方法。 BirdUI类中有两给方法:
public void showImage() {
// 设置bitmap的图片资源
bitmap = Bitmap.createBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.bird1));
// 设置bitmap1的图片资源
bitmap1 = Bitmap.createBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.pig1));
}
// 重写onDraw方法
public void onDraw(Canvas canvas) {
// 执行父类的onDraw方法
super.onDraw(canvas);
if (bitmap != null) {
// 遍历小猪线程,绘制小猪
for (PigThread pig : pigs) {
// 画小猪
canvas.drawBitmap(bitmap1, pig.x, pig.y, paint);
}
}
// 在BirdThread.xx,BirdThread.yy坐标处画图bitmap图形
// 画小鸟
//System.out.println("BirdThread.xx" + BirdThread.xx + "BirdThread.yy"
//+ BirdThread.yy);
if (bitmap != null) {
canvas.drawBitmap(bitmap, BirdThread.xx, BirdThread.yy, paint);
}
}
在主类运用线程,1,在线程里启动小猪线程
2,启动小鸟线程
代码如下:
new Thread() {
public void run() {
while (true) {
try {
sleep(1500);
// 创建小猪对象
PigThread pig = new PigThread();
// 启动小猪对象
pig.start();
// 添加到在接口Config中定义ArrayList<PigThread> // pigs=newArrayList<PigThread>();
// 便于遍历
pigs.add(pig);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}.start();
// 创建小鸟对象
BirdThread bbar = new BirdThread();
// 启动线程
bbar.start();
他不是运用在本线程里,而是非本线程里。不能引用invalidate(),而只能 引postInvalidate。才能起到嵌套线程的作用。他不是運用在本线程里,而是非本线程里。
生命周期的诠释
http://xiaoruanjian.iteye.com/blog/1369325
呵呵,我觉得很全面,里面下了功夫。
请各位前辈指点,如有改正的地方,请各位前辈指正,呵呵额,谢谢。
各位同仁,也可以提意见,呵呵,谢谢。
分享到:
相关推荐
android系统框架介绍,Android系统 = Linux内核 + Android运行时。 Android系统使用的Linux内核包含了一些专用驱动,例如Logger、Binder、Ashmem、Wakelock、Low-Memory Killer和Alarm等,这些Android专用驱动构成了...
Android系统启动过程分析 本文主要介绍Android系统的启动过程,以Androidinit进程之后部分为主,init之前部分同标准...本文主要分析android部分的启动,涉及范围为servicemanager启动到android系统的Java部分的Service
主要介绍了Android实现在TextView文字过长时省略部分或滚动显示的方法,结合实例形式分析了Android中TextView控件文字显示及滚动效果相关操作技巧,需要的朋友可以参考下
第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发...
分为几个阶段: 1、整个Android的多媒体框架OpenCore ...3、OpenCore和Android其他部分的集成 第一部分 OpenCore概述 第二部分 OpenCore的代码结构 第三部分 OpenCore OSCL简介 第四部分 文件格式处理和编解码部分简介
文档详细介绍了Android的运行机制,Application类的作用和使用方法,读过之后终于不再一知半解了!
介绍了Android下,电话部分模块的原理及实现.Telephony模块是Android中较重要的部分,很值得好好研究一下.
值得从事android hal层开发的人一看。 从这个图来看Sensor的架构还是非常的清淅, 黄色部分表示硬件,它要挂在I2C总线上 红色部分表示驱动,把驱动注册到Kernel的Input Subsystem上,然后通过Event Device把Sensor...
《Android底层开发实战》分为四个部分:一部分为预备知识篇,简要介绍嵌入式系统的定义与软硬件开发以及Android开发环境的搭建。第二部分为系统结构篇,主要介绍Android系统的源码结构、内核与相关工具以及环境库。...
第9章“Android的多媒体系统”,介绍Android的多媒体系统的核心部分,包括Android中多媒体系统的业务、结构、多媒体系统的核心框架、OpenCore系统结构和使用等内容。 第10章“Android的电话部分”,介绍Android...
主要介绍了Android 实现把bitmap图片的某一部分的颜色改成其他颜色,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
全面介绍Android的API函数,每一个类,每一个函数都有介绍,是学习Android必备的
全面介绍Android的API函数,每一个类,每一个函数都有介绍,是学习Android必备的
第02 部分 开发环境搭建及模拟器介绍 第03部分 Eclipse中Android项目的开发运行及管理 第04部分 Android项目的目录结构、执行流程及其他基础分析 第05部分 MVC设计模式讲解及电话拨号器和短信发送器应用 第06...
全书分4个部分,分别从Android基础介绍、环境搭建、SDK介绍,到应用剖析、组件介绍、综合实例演示,以及符合潮流的、最新的移动开发技术,如HTML5、OpenGL ES、NDK编程、Android测试驱动开发等几个方面讲述。...
《Android程序设计教程》介绍基于Android系统的程序设计技术,内容涵盖了Android相关领域,本书大致可以分成两个部分,第一部分为基础篇,主要介绍Android操作系统概况、Android生命周期与组件通信、Android用户界面...
普及android开发知识,全教程分八部分: 第一讲Android系统简介 第二讲建立Android开发环境 第三讲第一个Android应用 第四讲Android程序基础 第五讲Intent与Activity 第六讲Activity生命周期 第七讲使用Service 第...
android 几种基本组件的简单介绍,还有高级组件没搞呢
第三部分高级篇:讲解了Android开发中的高级技术,包括各种常用的Android资源、通信功能的开发、数据库、蓝牙与Wi-Fi、第三方程序库、2D绘图技术、OpenGLES绘图技术、Android的编译,以及Android的性能优化方法和...
《Android系统原理及开发要点详解》内容以知识性内容为纲,重点关注开发要点,各个部分内容注重相互照应,按照清晰的思路向读者介绍整个Android系统的原理和开发方法。 《Android系统原理及开发要点详解》按照...