大佬教程收集整理的这篇文章主要介绍了Android编程绘制抛物线的方法示例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了Android编程绘制抛物线的方法。分享给大家供大家参考,具体如下:
package com.yarin.android.Examples_05_04; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.widget.Toast; public class GameView extends View implements Runnable { /* 声明Paint对象 */ private Paint mPaint = null; double maxS = 0; double maxH = 0; double maxT = 0; double dx; double dy; double d; MovingObject obj; Boolean isDraw=false; public GameView(Context context) { super(context); /* 构建对象 */ mPaint = new Paint(); // 计算物体的最大高度、运动时间及最大射程 obj = new MovingObject(30,Math.PI / 4,Color.RED); // 运行时间 obj.T = 2 * obj.V0 * Math.sin(obj.Sita) / 9.8; // 最大高度 obj.H = obj.V0 * obj.V0 * Math.sin(obj.Sita) * Math.sin(obj.Sita) / (2 * 9.8); // 最大射程 obj.smax = 2 * obj.V0 * obj.V0 * Math.sin(obj.Sita) * Math.cos(obj.Sita) / 9.8; if (obj.smax > maxS) { maxS = obj.smax; } if (obj.H > maxH) { maxH = obj.H; } if (obj.T > maxT) { maxT = obj.T; } dx = (800 - 20) / maxS; dy = (480 - 20) / maxH; d = Math.min(dx,dy); //最大运行时间 Log.v("TAG",String.valueOf(maxT)); //最大高度 Log.v("TAG",String.valueOf(maxH)); //最大射程 Log.v("TAG",String.valueOf(maxS)); } public void onDraw(Canvas canvas) { super.onDraw(canvas); /* 设置画布的颜色 */ canvas.drawColor(Color.bLACK); /* 设置取消锯齿效果 */ mPaint.setAntiAlias(true); canvas.drawColor(Color.GREEN); if(isDraw) { canvas.drawCircle((float)obj.X,(float)obj.Y,10,mPaint); } } // 触笔事件 public Boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: new Thread(this).start(); break; } return true; } public void run() { for (double t = 0; t < maxT; t += 0.01) { Log.v("TAG",String.valueOf(t)); isDraw=true; // 水平坐标 double x = obj.V0 * Math.cos(obj.Sita) * t; // 竖直坐标 double y = obj.V0 * Math.sin(obj.Sita) * t - 9.8 * t * t / 2; if (y < 0) { conTinue; } // 坐标转换 obj.X = 10 + d * x; obj.Y = 480 - 10 - d * y; try { Thread.sleep(10); } catch (InterruptedException E) { Thread.currentThread().interrupt(); } // 使用posTinvalidate可以直接在线程中更新界面 posTinvalidate(); } } } class MovingObject { // 重力加速度 public final double G = 9.8; // / <sumMary> // / 构造函数 // / </sumMary> // / V0物体的初速度 // / Sita物体初速度与水平方向的夹角 // / Color颜色 public MovingObject(double V0,double Sita,int red) { this.V0 = V0; this.Sita = Sita; this.Color = red; } // / <sumMary> // / 物体的初速度 // / </sumMary> public double V0; // / <sumMary> // / 物体初速度与水平方向的夹角 // / </sumMary> public double Sita; // / <sumMary> // / 物体的横坐标 // / </sumMary> public double X; // / <sumMary> // / 物体的纵坐标 // / </sumMary> public double Y; // 物体的颜色 public int Color; // 要绘制的物体的矩形 public Rect GetObjectRectangle() { return new Rect((int) X - 3,(int) Y - 3,6,6); } // / <sumMary> // / 最大射程 // / </sumMary> public double smax; // / <sumMary> // / 最大高度 // / </sumMary> public double H; // / <sumMary> // / 运行时间 // / </sumMary> public double T; }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
以上是大佬教程为你收集整理的Android编程绘制抛物线的方法示例全部内容,希望文章能够帮你解决Android编程绘制抛物线的方法示例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。