【备忘】Android模拟小球自由落体(SurfaceView)
来源:互联网 发布:alpha beta算法 编辑:程序博客网 时间:2024/05/21 07:59
package com.example.sft;import java.util.ArrayList;import java.util.List;import java.util.Random;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.RadialGradient;import android.graphics.Shader;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;public class TestSurfaceView extends SurfaceView implements SurfaceHolder.Callback{ private Paint cp; private List<KCircle> KCList; private Random r; public TestSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub getHolder().addCallback(this); cp=new Paint(); cp.setColor(Color.BLACK); KCList=new ArrayList<KCircle>(); r=new Random(); } @Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } private int getRandomColor(){ return r.nextInt()%0xff000000; } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub } /** * */ public void run(){ new MyThread().start(); } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if (event.getAction() != MotionEvent.ACTION_DOWN && event.getAction() != MotionEvent.ACTION_MOVE) { return false; } KCList.add(new KCircle(getRandomColor(),(int)event.getX(),(int)event.getY())); return true; } class MyThread extends Thread{ @Override public void run() { // TODO Auto-generated method stub while(true){ Canvas c=getHolder().lockCanvas(); c.drawPaint(cp); for(int i=0;i<KCList.size();i++){ KCList.get(i).moveAndDraw(c); if(KCList.get(i).y>getHeight()){ KCList.remove(i); } } try { sleep(15); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } getHolder().unlockCanvasAndPost(c); } } } }
package com.example.sft;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RadialGradient;import android.graphics.Shader;public class KCircle { private int color; public int x; public int y; private Paint p; private int radius; int v; int a; public KCircle(int color){ this.color=color; x=0; y=0; v=0; a=2; radius=25; p=new Paint(); p.setColor(color); RadialGradient rg=new RadialGradient(x+10, y-10, 25,color+(0xffffffff-color)/2, color, Shader.TileMode.CLAMP); p.setShader(rg); p.setAntiAlias(true); } public KCircle(int colcr,int x,int y){ this(colcr); this.x=x; this.y=y; } public void moveAndDraw(Canvas c){ y+=v; v+=a; draw(c); } public void moveTo(int x,int y){ this.x=x; this.y=y; } public void draw(Canvas c){ RadialGradient rg=new RadialGradient(x+10, y-10, 25,0xffdddddd, color, Shader.TileMode.CLAMP); p.setShader(rg); c.drawCircle(x, y, radius, p); } }
把TestSurfaceView放入Activity显示出来 然后调用run方法 手指点击的地方就会有小球落下
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 【备忘】Android模拟小球自由落体(SurfaceView)
- 【备忘】Android模拟小球自由落体(SurfaceView)
- Android模拟小球自由落体2(重力感应并添加z轴)
- Android模拟小球自由落体2(重力感应并添加z轴)
- 小球自由落体动态模拟(Position Based Simulation)
- 小球自由落体动态模拟(Position Based Simulation)
- 小球的自由落体动画
- OpenGL绘制自由落体小球
- 【Android】弹跳的小球——SurfaceView
- JS模拟自由落体活动
- C++版 小球自由落体的实现
- C语言实现 小球自由落体问题
- Android新手上路——自定义SurfaceView,重力感应小球
- Android游戏入门 SurfaceView应用----手指发动小球
- 17、Android之SurfaceView实例自定义SurfaceView的应用——小球跟着手指移动
- JS模拟自由落体弹跳动画
- Android自由落体距离
- surfaceView 的使用 运动小球
- 5.2
- 关于oracle length()函数的问题 笔记
- C++程序设计-第9周 运算符的重载(之二)
- 编译性语言、脚本语言的区别
- MapReduce:详解Shuffle(copy,sort,merge)过程
- 【备忘】Android模拟小球自由落体(SurfaceView)
- C++ 编译搜索路径(包括include搜索路径和连接搜索路径
- eclipse如何修改dynamic web module version
- SG函数
- uva 10387 - Billiard
- C/C++程序员常用工具集
- STL List用法
- GCC 链接顺序导致使用MongoDB的应用链接失败
- Mysql 用户授权与回收