本文实例讲述了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自定义View实现绘制虚线的方法详解
# Android Path绘制贝塞尔曲线实现QQ拖拽泡泡
# Android 游戏开发中绘制游戏触摸轨迹的曲线图
# Android中贝塞尔曲线的绘制方法示例代码
# Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例
# Android编程之canvas绘制各种图形(点
# 直线
# 弧
# 圆
# 椭圆
# 文字
# 矩形
# 多边形
# 曲线
# 圆角矩形)
# android绘制几何图形的实例代码
# Android学习教程之2D绘图基础及绘制太极图
# Android自定义View实现shape图形绘制
# Android开发实现绘制淘宝收益图折线效果示例
# 进阶
# 重力加速度
# 相关内容
# 感兴趣
# 给大家
# 可以直接
# 更多关于
# 解决方法
# 所述
# 图像处理
# 程序设计
# 讲述了
# Runnable
# implements
# extends
# null
# mPaint
# private
# GameView
# View
相关文章:
,如何利用word制作宣传手册?
盐城做公司网站,江苏电子版退休证办理流程?
如何快速配置高效服务器建站软件?
建站之星下载版如何获取与安装?
如何通过免费商城建站系统源码自定义网站主题与功能?
建站之星后台密码遗忘如何找回?
建站之星如何防范黑客攻击与数据泄露?
宝塔建站助手安装配置与建站模板使用全流程解析
如何快速上传自定义模板至建站之星?
高端云建站费用究竟需要多少预算?
css网站制作参考文献有哪些,易聊怎么注册?
如何用低价快速搭建高质量网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
公众号网站制作网页,微信公众号怎么制作?
建站主机SSH密钥生成步骤及常见问题解答?
建站之星备案流程有哪些注意事项?
学校为何禁止电信移动建设网站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
网站制作难吗安全吗,做一个网站需要多久时间?
行程制作网站有哪些,第三方机票电子行程单怎么开?
如何用PHP工具快速搭建高效网站?
详解jQuery停止动画——stop()方法的使用
非常酷的网站设计制作软件,酷培ai教育官方网站?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
建站之星伪静态规则如何正确配置?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何通过云梦建站系统实现SEO快速优化?
独立制作一个网站多少钱,建立网站需要花多少钱?
平台云上自助建站如何快速打造专业网站?
外贸公司网站制作哪家好,maersk船公司官网?
c# 在高并发场景下,委托和接口调用的性能对比
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
微信h5制作网站有哪些,免费微信H5页面制作工具?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
怎么将XML数据可视化 D3.js加载XML
如何高效利用亚马逊云主机搭建企业网站?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
中山网站制作网页,中山新生登记系统登记流程?
如何快速生成专业多端适配建站电话?
如何快速搭建高效服务器建站系统?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何高效生成建站之星成品网站源码?
如何确保FTP站点访问权限与数据传输安全?
如何用y主机助手快速搭建网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
官网建站费用明细查询_企业建站套餐价格及收费标准指南
建站之星在线客服如何快速接入解答?
*请认真填写需求信息,我们会在24小时内与您取得联系。