Android UI SurfaceView的使用-绘制组合图型,并使其移动
来源:互联网 发布:mac抹掉进程失败 编辑:程序博客网 时间:2024/05/16 11:53
绘制容器类:
//图形绘制容器public class Contanier {private List<Contanier> list;private float x=0,y=0;public Contanier(){list=new ArrayList<Contanier>();}public void draw(Canvas canvas){canvas.save();canvas.translate(getX(), getY());childrenDraw(canvas);for(Contanier c : list){c.draw(canvas);}canvas.restore();}public void childrenDraw(Canvas canvas){}public void addChildren(Contanier child){list.add(child);}public void removeChildren(Contanier child){list.remove(child);}public float getX() {return x;}public void setX(float x) {this.x = x;}public float getY() {return y;}public void setY(float y) {this.y = y;}}
绘制正方型类:
//绘制正方型public class Rect extends Contanier {private Paint paint;public Rect(){paint=new Paint();paint.setColor(Color.RED);}@Overridepublic void childrenDraw(Canvas canvas) {super.childrenDraw(canvas);canvas.drawRect(0, 0, 100, 100, paint);this.setY(getY()+1);}}绘制圆:
//绘制圆public class Circle extends Contanier {private Paint paint;public Circle(){paint=new Paint();paint.setColor(Color.BLUE);}@Overridepublic void childrenDraw(Canvas canvas) {super.childrenDraw(canvas);canvas.drawCircle(50, 50, 50, paint);}}绘制类:
public class GameView extends SurfaceView implements Callback{private Contanier contaier;private Rect rect;private Circle circle;public GameView(Context context) {super(context);contaier=new Contanier();rect=new Rect();circle=new Circle();rect.addChildren(circle);contaier.addChildren(rect);getHolder().addCallback(this);}private void draw(){Canvas canvas=getHolder().lockCanvas();canvas.drawColor(Color.WHITE);contaier.draw(canvas);getHolder().unlockCanvasAndPost(canvas);}private Timer timer=null;private TimerTask task=null;//开始后让其根据Y轴进行移动private void startTimer(){timer=new Timer();task=new TimerTask() {@Overridepublic void run() {draw();}};timer.schedule(task, 100,100);}private void stopTimer(){if(timer!=null){timer.cancel();timer=null;}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceCreated(SurfaceHolder holder) {startTimer();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {stopTimer();}}
MainActivity:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new GameView(this)); }
效果:
0 0
- Android UI SurfaceView的使用-绘制组合图型,并使其移动
- Android UI SurfaceView的使用-绘制单个图型或多个图形
- Android SurfaceView绘制组合图形
- Android SurfaceView绘制组合图形
- Android的SurfaceView绘图并移动
- Android的SurfaceView绘图并移动
- Android学习2: Android使用SurfaceView绘制一条移动的线段
- Android SurfaceView的绘制详解
- android 如何使用surfaceview绘制类似游戏手柄的摇杆?
- Android使用自定义View继承SurfaceView实现动态折线图的绘制
- Android使用自定义View继承SurfaceView实现动态折线图的绘制
- Android-使用SurfaceView多线程绘制动画
- Android SurfaceView 分析及 C/C++通过surface绘制UI
- Android的SurfaceView使用
- Android的SurfaceView使用
- Android SurfaceView的使用
- [Android] SurfaceView使用实例(正余弦移动)
- Android SurfaceView绘制
- 详细阐述约瑟夫环问题(报数出队问题)
- 第四周 线性表(二)--链表 项目一 -- 建立单链表
- maints使用
- java编程思想-持有对象
- 第六周 周一 栈链
- Android UI SurfaceView的使用-绘制组合图型,并使其移动
- Oracle存储过程实例
- Ubuntu 14.04鼠标光标狂闪问题
- 第4周 项目3 - 单链表应用(1)
- 第三周项目4--顺序表应用(1)
- Swift和OC代码注释分析 #pragma mark, FIXME and TODO
- 第四周【数据结构实践项目——链表 项目5 - 猴子选大王】
- 阅读《时间,管理把握最宝贵的财富》摘录(1)
- 软件测试知识点