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

android自定義view實(shí)現(xiàn)圓周運(yùn)動(dòng)

 更新時(shí)間:2021年03月22日 10:47:01   作者:yabayaoya  
這篇文章主要為大家詳細(xì)介紹了android自定義view實(shí)現(xiàn)逆時(shí)針和順時(shí)針轉(zhuǎn)動(dòng)的圓周運(yùn)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了android自定義view實(shí)現(xiàn)圓周運(yùn)動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下

思想

自定義Animation,自己定義半徑,相當(dāng)于原來(lái)控件的位置為(0,0),按照每個(gè)角度區(qū)間,計(jì)算新的位置,跟著時(shí)間變動(dòng)

逆時(shí)針轉(zhuǎn)動(dòng)

public class VenusCircleAnimation extends Animation {

  private int radii;
  public VenusCircleAnimation(int radii) {
    this.radii = radii;
  }

  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
    //根據(jù)取值范圍 確定圓周運(yùn)動(dòng)的角度范圍。360-0
    float d = 360 * interpolatedTime;//interpolatedTime 取值范圍 0-1,表示時(shí)間
    if (d > 360) { //算法二
      d = d-360;
    }
    int[] ps = getNewLocation((int) d, radii);//
    t.getMatrix().setTranslate(ps[0], ps[1]);
  }

  public int[] getNewLocation(int newAngle, int r) {
    int newAngle1;
    int newX = 0, newY = 0;
    if (newAngle >= 0 && newAngle <= 90) {
      // Math.PI/180得到的結(jié)果就是1°,然后再乘以角度得到角度
      newX = (int) ( - (r * Math.cos(newAngle * Math.PI / 180)));
      newY = (int) (r * Math.sin(newAngle * Math.PI / 180));
    } else if (newAngle >= 90 && newAngle <= 180) {// 90-180
      newAngle1 = 180 - newAngle;
      newX = (int) (r * Math.cos(newAngle1 * Math.PI / 180));
      newY = (int) (r * Math.sin(newAngle1 * Math.PI / 180));
    } else if (newAngle >= 180 && newAngle <= 270) {//180-270
      newAngle1 = 270 - newAngle;
      newX = (int) (r * Math.sin(newAngle1 * Math.PI / 180));
      newY = (int) ( - (r * Math.cos(newAngle1 * Math.PI / 180)));
    } else if (newAngle >= 270) {//270-360
      newAngle1 = 360 - newAngle;
      newX = (int) ( - (r * Math.cos(newAngle1 * Math.PI / 180)));
      newY = (int) ( - (r * Math.sin(newAngle1 * Math.PI / 180)));
    }
    return new int[]{newX, newY};
  }

}

順時(shí)針

public class CircleAnimation extends Animation {

  private int radii;

  public CircleAnimation(int radii) {
    this.radii = radii;
  }

  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
    float d = 360 * interpolatedTime ;
    if (d > 360) {
      d = d - 360;
    }
    int[] ps = getNewLocation((int) d, radii);//
    t.getMatrix().setTranslate(ps[0], ps[1]);
  }


  public int[] getNewLocation(int newAngle, int r) {
    int newAngle1;
    int newX = 0, newY = 0;
    if (newAngle >= 0 && newAngle <= 90) {
      newX = (int) (r * Math.sin(newAngle * Math.PI / 180));
      newY = (int) ( - (r * Math.cos(newAngle * Math.PI / 180)));
    } else if (newAngle >= 90 && newAngle <= 180) {// 90-180
      newAngle1 = 180 - newAngle;
      newX = (int) (r * Math.sin(newAngle1 * Math.PI / 180));
      newY = (int) (r * Math.cos(newAngle1 * Math.PI / 180));
    } else if (newAngle >= 180 && newAngle <= 270) {//180-270
      newAngle1 = 270 - newAngle;
      newX = (int) ( - (r * Math.cos(newAngle1 * Math.PI / 180)));
      newY = (int) (r * Math.sin(newAngle1 * Math.PI / 180));
    } else if (newAngle >= 270 && newAngle <= 360) {//270-360
      newAngle1 = 360 - newAngle;
      newX = (int) ( - (r * Math.sin(newAngle1 * Math.PI / 180)));
      newY = (int) ( - (r * Math.cos(newAngle1 * Math.PI / 180)));
    }
    return new int[]{newX, newY};
  }
}

使用

CircleAnimation animationw = new CircleAnimation(m);
 animationw.setDuration(d);
 animationw.setRepeatCount(-1);
 animationw.setInterpolator(new LinearInterpolator());
 imageView.startAnimation(animationw);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android手勢(shì)操作識(shí)別詳解

    Android手勢(shì)操作識(shí)別詳解

    這篇文章主要為大家詳細(xì)介紹了Android手勢(shì)操作識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android實(shí)現(xiàn)App中導(dǎo)航Tab欄懸浮的功能

    Android實(shí)現(xiàn)App中導(dǎo)航Tab欄懸浮的功能

    相信大家在玩手機(jī)的過(guò)程中應(yīng)該會(huì)注意到很多的app都有這種功能,比如說(shuō)外賣(mài)達(dá)人常用的“餓了么”。所以這篇文章給大家分享了Android如何實(shí)現(xiàn)app中的導(dǎo)航Tab欄懸浮的功能,有需要的朋友們可以參考借鑒。
    2016-10-10
  • 安卓版微信跳一跳輔助 跳一跳輔助Java代碼

    安卓版微信跳一跳輔助 跳一跳輔助Java代碼

    這篇文章主要為大家詳細(xì)介紹了安卓版微信跳一跳輔助,簡(jiǎn)易版ADB命令式實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android向Excel寫(xiě)入數(shù)據(jù)導(dǎo)出U盤(pán)并發(fā)送郵件

    Android向Excel寫(xiě)入數(shù)據(jù)導(dǎo)出U盤(pán)并發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了Android將數(shù)據(jù)寫(xiě)入Excel格式導(dǎo)出U盤(pán)、發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android車(chē)載多媒體開(kāi)發(fā)MediaSession框架示例詳解

    Android車(chē)載多媒體開(kāi)發(fā)MediaSession框架示例詳解

    這篇文章主要為大家介紹了Android車(chē)載多媒體開(kāi)發(fā)MediaSession框架示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Android?Jetpack庫(kù)剖析之LiveData組件篇

    Android?Jetpack庫(kù)剖析之LiveData組件篇

    LiveData是Jetpack組件的一部分,更多的時(shí)候是搭配ViewModel來(lái)使用,相對(duì)于Observable,LiveData的最大優(yōu)勢(shì)是其具有生命感知的,換句話(huà)說(shuō),LiveData可以保證只有在組件( Activity、Fragment、Service)處于活動(dòng)生命周期狀態(tài)的時(shí)候才會(huì)更新數(shù)據(jù)
    2022-07-07
  • Flutter懸浮按鈕FloatingActionButton使用詳解

    Flutter懸浮按鈕FloatingActionButton使用詳解

    本文主要介紹了Flutter懸浮按鈕FloatingActionButton使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 頁(yè)面未隨軟鍵盤(pán)上升及android隱藏軟鍵盤(pán)總結(jié)

    頁(yè)面未隨軟鍵盤(pán)上升及android隱藏軟鍵盤(pán)總結(jié)

    這篇文章主要介紹了頁(yè)面未隨軟鍵盤(pán)上升及android隱藏軟鍵盤(pán)總結(jié),需要的朋友可以參考下
    2015-12-12
  • Flutter中關(guān)于angle的踩坑記錄

    Flutter中關(guān)于angle的踩坑記錄

    考慮到可能有很多同學(xué)還沒(méi)有接觸 Flutter,下面這篇文章主要給大家介紹了關(guān)于Flutter中關(guān)于angle的踩坑記錄,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 詳解Android 華為凹口屏適配小結(jié)

    詳解Android 華為凹口屏適配小結(jié)

    這篇文章主要介紹了Android 華為凹口屏適配小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02

最新評(píng)論

宁陕县| 山西省| 扶沟县| 荔浦县| 河池市| 郴州市| 平南县| 女性| 南召县| 江阴市| 游戏| 色达县| 绥化市| 甘肃省| 赤峰市| 达州市| 新兴县| 茶陵县| 万荣县| 北流市| 江阴市| 甘德县| 江安县| 临朐县| 五河县| 菏泽市| 资溪县| 德惠市| 陇西县| 新竹市| 左权县| 咸丰县| 扶余县| 海兴县| 长白| 晋城| 永胜县| 望江县| 精河县| 长武县| 光泽县|