Android 2D图像显示
2009-09-10 00:19
316 查看
本文介绍在Android如何显示2D图像
1)使用XML,代码如下
(代码比较简单,不做解析了!!)
2)继承View
根据public void setContentView (View view) ,新建一个继承View的类,并重写onDraw函数。代码如下:
3)利用SurfaceView和Thread
第三种方法,可以快速地描绘界面,使用SurfaceView可以让其它非UI线程直接对画面进行操作。
1)使用XML,代码如下
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/android" />
(代码比较简单,不做解析了!!)
2)继承View
根据public void setContentView (View view) ,新建一个继承View的类,并重写onDraw函数。代码如下:
package android.szu.edu.cn; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.Window; public class Show2DImage extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //setContentView(R.layout.main); setContentView(new Panel(this)); } class Panel extends View{ public Panel(Context context) { super(context); // TODO Auto-generated constructor stub } public void onDraw(Canvas canvas){ Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.icon); canvas.drawColor(Color.BLACK); canvas.drawBitmap(_scratch, 10, 10, null); } } }
3)利用SurfaceView和Thread
package android.szu.edu.cn; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.Window; public class Show2DImage extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // setContentView(R.layout.main); setContentView(new Panel(this)); } // class Panel extends View{ // // public Panel(Context context) { // super(context); // // TODO Auto-generated constructor stub // } // // public void onDraw(Canvas canvas){ // Bitmap _scratch = BitmapFactory.decodeResource(getResources(), // R.drawable.icon); // canvas.drawColor(Color.BLACK); // canvas.drawBitmap(_scratch, 10, 10, null); // } // } class Panel extends SurfaceView implements SurfaceHolder.Callback { private Draw2DThread _thread; public Panel(Context context) { super(context); getHolder().addCallback(this); _thread = new Draw2DThread(getHolder(), this); } public void onDraw(Canvas canvas) { Bitmap _scratch = BitmapFactory.decodeResource(getResources(), R.drawable.android); canvas.drawColor(Color.BLACK); canvas.drawBitmap(_scratch, 10, 10, null); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub _thread.setRunning(true); _thread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub boolean retry = true; _thread.setRunning(false); while (retry) { try { _thread.join(); retry = false; } catch (InterruptedException e) { // TODO: handle exception } } } } class Draw2DThread extends Thread { private SurfaceHolder _surfaceHolder; private Panel _panel; private boolean _run; public Draw2DThread(SurfaceHolder surfaceHolder, Panel panel) { _surfaceHolder = surfaceHolder; _panel = panel; } public void setRunning(boolean run) { _run = run; } public void run() { Canvas c; while (_run) { c = null; try { c = _surfaceHolder.lockCanvas(null); synchronized (_surfaceHolder) { _panel.onDraw(c); } } finally { if (c != null) { _surfaceHolder.unlockCanvasAndPost(c); } } } } } }
第三种方法,可以快速地描绘界面,使用SurfaceView可以让其它非UI线程直接对画面进行操作。
相关文章推荐
- Android Gallery组件实现循环显示图像
- 详谈Android从文件读取图像显示的效率问题
- (VR, AR)unity3d和Android java通信 传输 byte图片在Texture2d显示
- [Android] 给图像添加相框、圆形圆角显示图片、图像合成知识
- android-----使用ImageSpan对象在TextView组件中显示图像
- Android开发使用XML文件定义ImageView的在selected为true和false状态下显示不同的图像
- Android简明开发教程十七:Dialog 显示图像
- Android笔记---framebuffer 显示图像文件(QImage方式)
- 在Android中用ndk层egl/opengl es显示java层打开的图像
- Android Gallery组件实现循环显示图像
- 【Android Developers Training】 61. 序言:使用OpenGL ES显示图像
- Android图片处理:识别图像方向并显示
- Android UI开发第四十二篇——实现实现易信的圆形图像和对话列表的图像显示部分
- 要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上。Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法(没有全部列
- android显示RGB565数据图像
- 【Android】Android2D图像之Canvas
- Android开发(16)-TextView显示表情图像和文字
- android 点击图像显示大图
- Android Camera2 Opengles2.0 图像实时滤镜 显示 视频编码