本文实例讲述了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{ 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;}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android编程绘制抛物线的方法示例
后端开发2023-05-31
Android编程实现ImageView图片抛物线动画效果的方法
后端开发2022-06-06
Android中贝塞尔曲线的绘制方法示例代码
后端开发2022-06-06
Android LineChart绘制折线图的示例详解
后端开发2023-03-24
Android绘制双折线图的方法
后端开发2024-04-02
Android编程绘制圆形图片的方法
后端开发2022-06-06
android绘制曲线和折线图的方法
后端开发2024-04-02
Python编程使用matplotlib绘制动态圆锥曲线示例
后端开发2024-04-02
Android编程之绘制文本(FontMetrics)实现方法
后端开发2022-06-06
Android开发XY轴Board的绘制教程示例
后端开发2022-12-09
android绘制圆形图片的两种方式示例
后端开发2022-06-06
Android绘制平移动画的示例代码怎么编写
后端开发2023-06-26
Android利用贝塞尔曲线绘制动画的示例代码
后端开发2024-04-02
Android自定义View绘制贝塞尔曲线的方法
后端开发2024-04-02
Android编程实现播放视频的方法示例
后端开发2023-05-30
Android编程之菜单Menu的创建方法示例
后端开发2023-05-30
python利用matplotlib库绘制饼图的方法示例
后端开发2022-06-04
Android自定义View实现绘制虚线的方法详解
后端开发2023-05-31
Android编程实现等比例显示图片的方法
后端开发2022-06-06
Android编程操作手机通讯录的方法示例
后端开发2023-05-30
咦!没有更多了?去看看其它编程学习网 内容吧