国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android設置View抖動動畫

2019-11-09 18:30:42
字體:
來源:轉載
供稿:網友

在應用中,有時候我們要吸引用戶去點擊某些按鈕,比如應用市場的推薦按鈕,為了能夠吸引用戶主動點擊而且不過分的打擾用戶,最好的方法就是給我們想吸引用戶注意的view添加一些抖動動畫,比如這張圖

這里我主要實現了兩種抖動動畫,左右抖動和上下抖動。左右抖動通常用于表單驗證失敗的時候,上下抖動通常用于吸引用于用戶去點擊。動畫主要使用了Keyframe和PRopertyValuesHolder。Keyframe是一個時間/值對,用于定義在某個時刻動畫的狀態。比如Keyframe.ofInt(.5f, Color.RED)定義了當動畫進行了50%的時候,顏色的值應該是Color.RED。PropertyValuesHolder保存了view的屬性的信息以及在動畫進行過程中該屬性的值。通過PropertyValuesHolder.ofKeyframe方法來構建PropertyValuesHolder的實例,改方法接收一個屬性名以及多個Keyframe對象作為參數。當你想通過動畫改變多個屬性的時候PropertyValuesHolder就非常有用。直接上代碼:tada方法實現了上下抖動。抖動的原理很簡單,就是對view的x軸和y軸進行0.9倍到1.1倍的縮放,同時對view進行一定角度的上下旋轉。

[java] view plain copypublic static ObjectAnimator tada(View view) {      return tada(view, 1f);  }    public static ObjectAnimator tada(View view, float shakeFactor) {        PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofKeyframe(View.SCALE_X,              Keyframe.ofFloat(0f, 1f),              Keyframe.ofFloat(.1f, .9f),              Keyframe.ofFloat(.2f, .9f),              Keyframe.ofFloat(.3f, 1.1f),              Keyframe.ofFloat(.4f, 1.1f),              Keyframe.ofFloat(.5f, 1.1f),              Keyframe.ofFloat(.6f, 1.1f),              Keyframe.ofFloat(.7f, 1.1f),              Keyframe.ofFloat(.8f, 1.1f),              Keyframe.ofFloat(.9f, 1.1f),              Keyframe.ofFloat(1f, 1f)      );        PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofKeyframe(View.SCALE_Y,              Keyframe.ofFloat(0f, 1f),              Keyframe.ofFloat(.1f, .9f),              Keyframe.ofFloat(.2f, .9f),              Keyframe.ofFloat(.3f, 1.1f),              Keyframe.ofFloat(.4f, 1.1f),              Keyframe.ofFloat(.5f, 1.1f),              Keyframe.ofFloat(.6f, 1.1f),              Keyframe.ofFloat(.7f, 1.1f),              Keyframe.ofFloat(.8f, 1.1f),              Keyframe.ofFloat(.9f, 1.1f),              Keyframe.ofFloat(1f, 1f)      );        PropertyValuesHolder pvhRotate = PropertyValuesHolder.ofKeyframe(View.ROTATION,              Keyframe.ofFloat(0f, 0f),              Keyframe.ofFloat(.1f, -3f * shakeFactor),              Keyframe.ofFloat(.2f, -3f * shakeFactor),              Keyframe.ofFloat(.3f, 3f * shakeFactor),              Keyframe.ofFloat(.4f, -3f * shakeFactor),              Keyframe.ofFloat(.5f, 3f * shakeFactor),              Keyframe.ofFloat(.6f, -3f * shakeFactor),              Keyframe.ofFloat(.7f, 3f * shakeFactor),              Keyframe.ofFloat(.8f, -3f * shakeFactor),              Keyframe.ofFloat(.9f, 3f * shakeFactor),              Keyframe.ofFloat(1f, 0)      );        return ObjectAnimator.ofPropertyValuesHolder(view, pvhScaleX, pvhScaleY, pvhRotate).              setDuration(1000);  }  nope方法實現了左右抖動。左右抖動的原理就是對view進行x軸的平移。

[java] view plain copypublic static ObjectAnimator nope(View view) {      int delta = view.getResources().getDimensionPixelOffset(R.dimen.spacing_medium);        PropertyValuesHolder pvhTranslateX = PropertyValuesHolder.ofKeyframe(View.TRANSLATION_X,              Keyframe.ofFloat(0f, 0),              Keyframe.ofFloat(.10f, -delta),              Keyframe.ofFloat(.26f, delta),              Keyframe.ofFloat(.42f, -delta),              Keyframe.ofFloat(.58f, delta),              Keyframe.ofFloat(.74f, -delta),              Keyframe.ofFloat(.90f, delta),              Keyframe.ofFloat(1f, 0f)      );        return ObjectAnimator.ofPropertyValuesHolder(view, pvhTranslateX).              setDuration(500);  }  github代碼

https://github.com/lzyzsd/AndroidSeekAttention

參考:https://plus.google.com/+CyrilMottier/posts/FABaJhRMCuyhttp://developer.android.com/reference/android/animation/PropertyValuesHolder.htmlhttp://developer.android.com/guide/topics/graphics/prop-animation.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥城市| 甘德县| 海宁市| 金寨县| 婺源县| 天祝| 玉环县| 布拖县| 阿拉尔市| 轮台县| 剑川县| 浪卡子县| 舟山市| 温州市| 连城县| 湛江市| 郯城县| 富阳市| 闵行区| 乌苏市| 义乌市| 新田县| 株洲县| 梅河口市| 沙河市| 江门市| 新和县| 阿尔山市| 万州区| 渭源县| 大名县| 师宗县| 文山县| 大城县| 芮城县| 罗定市| 琼中| 丰宁| 西乡县| 会宁县| 南投县|