【Android实战】SurfaceView绘制各种效果Demo
2014-12-10 16:51
393 查看
1、狂奔的***
2、用view绘制一个扇形
public class MySurface extends SurfaceView implements Callback, Runnable { SurfaceHolder holder; boolean goOn = true; int w; int h; Bitmap bitmap; int x; int y; int bx; int by; boolean down = true; boolean right = true; int p = 30; public MySurface(Context context, int wi, int hi) { super(context); // TODO Auto-generated constructor stub holder = getHolder(); holder.addCallback(this); setFocusable(true); setFocusableInTouchMode(true); w = wi; h = hi; Bitmap obitmap = BitmapFactory.decodeResource(getResources(), R.drawable.b1); bitmap = Bitmap.createScaledBitmap(obitmap, 260, 200, false); bx = bitmap.getWidth(); by = bitmap.getHeight(); Thread t = new Thread(this); } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub Thread t = new Thread(this); t.start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub goOn = false; } @Override public void run() { // TODO Auto-generated method stub while (goOn) { myDraw(); try { if (y < h - by && down) { y += p; } else { down = false; if (x < w - bx && right) { x += p; } else { right = false; if (y > 0 && !down) { y -= p; } else { if (x > 0 && !right) { x -= p; } else { down = true; right = true; } } } } Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Canvas canvas; private void myDraw() { // TODO Auto-generated method stub canvas = holder.lockCanvas(); if (canvas != null) { Paint paint = new Paint(); paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR)); canvas.drawPaint(paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC)); canvas.drawColor(Color.GRAY); try { if (canvas != null) { canvas.drawBitmap(bitmap, x, y, null); } } finally { if (canvas != null) { holder.unlockCanvasAndPost(canvas); } } } } }
2、用view绘制一个扇形
public class MySxView extends View { String title[] = { "四川", "重庆", "北京", "上海", "南京", "深圳" }; public MySxView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(400, 400, 300, paint); int each = 360 / title.length; Paint p1 = new Paint(); Paint p2 = new Paint(); Paint p3 = new Paint(); p1.setColor(Color.BLUE); p2.setColor(Color.YELLOW); p3.setColor(Color.WHITE); for (int i = 0; i < title.length; i++) { RectF oval = new RectF(100,100,700,700); canvas.drawArc(oval, i * each, each, true, i % 2 == 0 ? p1 : p2); } } }
相关文章推荐
- Android view的移动和画布的移动原理 适用于制作各种效果
- Android: 利用SurfaceView绘制股票滑动直线解决延迟问题
- SurfaceView与Canvas的结合实现简单的图形绘制与动画效果
- 实战Android手机客户端的家校通平台V1.0(SurfaceView实现统计图表)
- Android SurfaceView绘制
- Android-使用SurfaceView多线程绘制动画
- Android 利用SurfaceView进行图形绘制
- android SurfaceView绘制 重新学习--基础绘制
- Android开发学习SurfaceView显示动画效果
- 实战Android手机客户端的家校通平台V1.0(SurfaceView实现统计图表)
- Android: 利用SurfaceView绘制股票滑动直线解决延迟问题
- android 使用SurfaceView实现小球高处落下并弹起的效果
- Android view的移动和画布的移动原理 适用于制作各种效果
- android SurfaceView绘制 重新学习--切图clipRect详解
- android 如何使用surfaceview绘制类似游戏手柄的摇杆?
- 在UITableView中实现各种翻转切换效果的Demo
- Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView)
- Android开发:SurfaceView上新建线程绘制旋转图片 及 刷新特定区域(脏矩形)
- android surfaceView 的简单使用 画图,拖动效果
- android SurfaceView绘制 重新学习--控制动画移动