Android开发简单使用surfaceview
2015-12-11 16:22
513 查看
在安卓开发中自定义View是比较普遍使用的,而且对于希望从事安卓开发的程序员来说,自定义View也应该是最安卓开发部分最难的,可能一个程序猿在两年内都在跟学习自定义view打交道。好了,废话不多说,我们来简单的使用一下surfaceview,这里要说明的是surfaceview是运行在子线程的,一般在游戏中使用较多。请看下面的代码:
package com.example.surface;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
//1、集成surfaceview,并实现SurfaceHolder接口的内部接口
public class CustomView extends SurfaceView implements Callback{
//2.定义两个属性,surfaceholder和画笔工具
private SurfaceHolder surfaceHolder;
private Paint paint;
public CustomView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
//3、添加接口道surfaceholder实现监听
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
//4、初始化画笔工具,绘制颜色
paint = new Paint();
paint.setColor(Color.GREEN);
}
private void draw(){
//5、锁定画布,即可以实现绘制
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.RED);
//canvas.save();
canvas.drawCircle(500, 500, 200, paint);
//绘制完毕后解锁画布并通知holder
surfaceHolder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// 绘制过程是在surfaceChanged方法中实现的,,具体实现请看安卓源码
draw();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
源码地址:http://download.csdn.net/detail/odabenniu/9347645 赠送一个可以使用的监听网络下载进度的自定义view
package com.example.surface;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
//1、集成surfaceview,并实现SurfaceHolder接口的内部接口
public class CustomView extends SurfaceView implements Callback{
//2.定义两个属性,surfaceholder和画笔工具
private SurfaceHolder surfaceHolder;
private Paint paint;
public CustomView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
//3、添加接口道surfaceholder实现监听
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
//4、初始化画笔工具,绘制颜色
paint = new Paint();
paint.setColor(Color.GREEN);
}
private void draw(){
//5、锁定画布,即可以实现绘制
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.RED);
//canvas.save();
canvas.drawCircle(500, 500, 200, paint);
//绘制完毕后解锁画布并通知holder
surfaceHolder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// 绘制过程是在surfaceChanged方法中实现的,,具体实现请看安卓源码
draw();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
源码地址:http://download.csdn.net/detail/odabenniu/9347645 赠送一个可以使用的监听网络下载进度的自定义view
相关文章推荐
- android 6.0 权限的坑
- Android log日志输出到文件
- android 侧滑菜单效果----DrawerLayout(抽屉导航)
- Android之meta-data理解
- Android - Data Binding
- Android摇一摇功能实现
- Android内存优化之三:打开MAT中的Bitmap原图
- Android内存优化之二:MAT使用进阶
- Android CheckBox paddingleft 无效
- Android内存优化之一:MAT使用入门
- android自定义keystore操作
- Android自定义View的实现方法
- Android屏幕适配全攻略
- Android进阶之路——RecyclerView(二)
- Android 百分比适配,轻松解决适配问题
- 《Android源码设计模式解析与实战》读书笔记(四)
- AndroidGroup的使用
- Android沉浸式状态栏
- Android沉浸式状态栏(一)
- (转)Android Binder设计与实现 – 设计篇