最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程繪制拋物線的方法示例

 更新時(shí)間:2017年06月16日 10:46:15   作者:L_serein  
這篇文章主要介紹了Android編程繪制拋物線的方法,涉及Android圖形繪制與數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了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);
    /* 構(gòu)建對象 */
    mPaint = new Paint();
    // 計(jì)算物體的最大高度、運(yùn)動(dòng)時(shí)間及最大射程
    obj = new MovingObject(30, Math.PI / 4, Color.RED);
    // 運(yùn)行時(shí)間
    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);
    //最大運(yùn)行時(shí)間
    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);
    /* 設(shè)置畫布的顏色 */
    canvas.drawColor(Color.BLACK);
    /* 設(shè)置取消鋸齒效果 */
    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;
      // 水平坐標(biāo)
      double x = obj.V0 * Math.cos(obj.Sita) * t;
      // 豎直坐標(biāo)
      double y = obj.V0 * Math.sin(obj.Sita) * t - 9.8 * t * t / 2;
      if (y < 0)
      {
        continue;
      }
      // 坐標(biāo)轉(zhuǎn)換
      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>
  // / 構(gòu)造函數(shù)
  // / </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>
  // / 物體的橫坐標(biāo)
  // / </summary>
  public double X;
  // / <summary>
  // / 物體的縱坐標(biāo)
  // / </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>
  // / 運(yùn)行時(shí)間
  // / </summary>
  public double T;
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android TextView實(shí)現(xiàn)點(diǎn)擊顯示全文與隱藏功能(附源碼)

    Android TextView實(shí)現(xiàn)點(diǎn)擊顯示全文與隱藏功能(附源碼)

    TextView用法很多,用到的地方更是普遍,所以學(xué)好TextView的使用很重要很重要很重要。下面這篇文章主要介紹了Android中TextView實(shí)現(xiàn)顯示全文與隱藏功能的相關(guān)資料,文中給出了詳細(xì)的示例代碼和源碼下載,需要的朋友可以參考下。
    2017-03-03
  • Android識別NFC芯片制造商的方法

    Android識別NFC芯片制造商的方法

    這篇文章介紹了Android識別NFC芯片制造商的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Android開發(fā)之Notification通知用法詳解

    Android開發(fā)之Notification通知用法詳解

    這篇文章主要介紹了Android開發(fā)之Notification通知用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Notification通知的功能、參數(shù)、定義及使用方法,需要的朋友可以參考下
    2016-11-11
  • 手把手教你實(shí)現(xiàn)Android編譯期注解

    手把手教你實(shí)現(xiàn)Android編譯期注解

    今天給大家介紹Android編譯期注解sdk的步驟以及注意事項(xiàng),并簡要分析了運(yùn)行時(shí)注解以及字節(jié)碼技術(shù)在生成代碼上與編譯期注解的不同與優(yōu)劣,感興趣的朋友一起看看吧
    2021-07-07
  • Android ListView適配器(Adapter)優(yōu)化方法詳解

    Android ListView適配器(Adapter)優(yōu)化方法詳解

    這篇文章主要介紹了Android ListView優(yōu)化方法詳解的相關(guān)資料,這里舉例說明該如何對ListView 進(jìn)行優(yōu)化,具有一定的參考價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 關(guān)于android studio升級4.1 某些插件使用不了的問題(Mac)

    關(guān)于android studio升級4.1 某些插件使用不了的問題(Mac)

    這篇文章主要介紹了關(guān)于android studio升級4.1 某些插件使用不了的問題(Mac),本文給大家分享解決方法供大家參考,感興趣的朋友跟隨小編一起看看吧
    2020-10-10
  • Kotlin淺析null操作方法

    Kotlin淺析null操作方法

    Kotlin對比于Java的一個(gè)最大的區(qū)別就是它致力于消除空引用所帶來的危險(xiǎn)。在Java中,如果我們嘗試訪問一個(gè)空引用的成員可能就會(huì)導(dǎo)致空指針異常NullPointerException(NPE)的出現(xiàn)。在Kotlin語言中就解決了這個(gè)問題,下面來看看它是如何做到的
    2022-08-08
  • Android利用startActivityForResult返回?cái)?shù)據(jù)到前一個(gè)Activity

    Android利用startActivityForResult返回?cái)?shù)據(jù)到前一個(gè)Activity

    這篇文章主要介紹了Android利用startActivityForResult返回?cái)?shù)據(jù)到前一個(gè)Activity,幫助大家更好的利用Android進(jìn)行開發(fā),感興趣的朋友可以了解下
    2021-01-01
  • Android實(shí)現(xiàn)簡易版打地鼠

    Android實(shí)現(xiàn)簡易版打地鼠

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡易版打地鼠,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • android獲取ibeacon列表的方法

    android獲取ibeacon列表的方法

    這篇文章主要為大家詳細(xì)介紹了android獲取ibeacon列表的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評論

奉节县| 古蔺县| 滦平县| 融水| 南木林县| 拉萨市| 永寿县| 峨眉山市| 安图县| 台州市| 陇南市| 搜索| 攀枝花市| 海原县| 革吉县| 昭通市| 长武县| 通山县| 睢宁县| 太谷县| 城固县| 黄石市| 科尔| 上饶市| 宝清县| 紫阳县| 昌平区| 忻州市| 宜都市| 于田县| 迁西县| 田阳县| 红桥区| 鄂伦春自治旗| 邯郸市| 海兴县| 乌鲁木齐市| 蒲江县| 色达县| 江安县| 九江市|