午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

android自定義view實現圓周運動

瀏覽:150日期:2022-09-20 13:44:26

本文實例為大家分享了android自定義view實現圓周運動的具體代碼,供大家參考,具體內容如下

android自定義view實現圓周運動

思想

自定義Animation,自己定義半徑,相當于原來控件的位置為(0,0),按照每個角度區間,計算新的位置,跟著時間變動

android自定義view實現圓周運動

逆時針轉動

public class VenusCircleAnimation extends Animation { private int radii; public VenusCircleAnimation(int radii) { this.radii = radii; } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { //根據取值范圍 確定圓周運動的角度范圍。360-0 float d = 360 * interpolatedTime;//interpolatedTime 取值范圍 0-1,表示時間 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得到的結果就是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}; }}

順時針

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);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 亚洲综合视频网 | 天天干夜夜操 | 日韩成人精品视频 | 日韩不卡视频在线 | 午夜男人天堂 | 黄色a一级片| 婷婷综合在线 | 欧美午夜在线视频 | 精品乱子伦一区二区 | 国产黄色在线看 | 青青青视频在线免费观看 | 嫩草99| 制服丝袜亚洲色图 | 超碰99在线观看 | 国产不卡在线观看视频 | 中文字幕第一页亚洲 | 五月婷网站 | 一区二区三区在线免费观看视频 | 亚洲精品中字 | 日韩欧美视频在线 | 精品视频网站 | 国产玖玖 | 黄色的网站在线观看 | 精品国产一区二区三区久久久蜜臀 | 中文字幕av观看 | 亚欧精品在线观看 | 日韩欧美亚洲综合 | 亚洲性猛交 | av男优大全 | 久久久一区二区三区四区 | 日韩一级免费毛片 | 亚洲精品xxxx | 久久一区精品 | 天天天天干 | 老司机免费精品视频 | 天天干天天操天天 | 国产精品久久久久久久妇 | 一区二区三区视频在线免费观看 | 国产视频一级 | 91久久久久国产一区二区 | 亚洲最大av在线 |