亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

android自定義view實現圓周運動

瀏覽:88日期: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
相關文章:
主站蜘蛛池模板: 在线91精品亚洲网站精品成人 | 国产精品日本一区二区不卡视频 | xxxx鞠婧祎xxxx网站视频观看 | 成 人 黄 色 大 片全部 | 国内精品福利在线视频 | 国产高清国内精品福利99久久 | 成人午夜影院 | 国产最新精品2020好看的 | 精品视频在线免费播放 | 好吊色青青青国产在线观看 | 国产成人免费网站 | 一级特级欧美aaaaa毛片 | 久久久2019精品| 欧美性色黄大片一级毛片视频 | 久久国产在线观看 | xxxxbbbb性猛hd高清 | 激情亚州 | 在线亚洲精品国产成人二区 | 日本的黄色录像 | 99久久精品国产免费 | 婷婷开心六月久久综合丁香 | 国产日产欧产精品精品软件 | 精品日本亚洲一区二区三区 | 青青草a国产免费观看 | 国产一级aaa全黄毛片 | 国产精品爱久久久久久久9999 | 麻豆日韩区久久综合 | 啪网址| 婷婷99视频精品全部在线观看 | 中文字幕综合在线 | 亚洲欧美综合乱码精品成人网 | 成人国产精品免费视频 | 菠萝菠萝蜜在线看7 | 国产一在线观看 | 午夜视频网站在线观看 | 国产精品18久久久久久小说 | 国产亚洲综合精品一区二区三区 | 欧美黄色大片网站 | 黄色a一级视频 | 久久久日本精品一区二区三区 | 国产在线欧美精品中文一区 |