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

首頁 > 系統(tǒng) > Android > 正文

Android屬性動畫特點詳解

2019-12-12 00:26:35
字體:
供稿:網(wǎng)友

本文實例為大家分享了Android屬性動畫使用的具體代碼,供大家參考,具體內(nèi)容如下

MainActivity.java

/*屬性動畫的特點:動畫效果會改變控件的位置.且開啟動畫的是動畫對象,而不是控件對象.    只有旋轉(zhuǎn)的屬性動畫是經(jīng)常用的,注意參數(shù).    注意:這些方法都是安卓在3.0以后出現(xiàn)的新特性,所以要把AndroidManifest.xml里的android:minSdkVersion值修改為11以上*///注釋后面有222的暫時不用管.public class MainActivity extends AppCompatActivity implements View.OnClickListener {  private ImageButton imageView;  private Button alpha_bt;  private Button rotationY_bt;  private Button scaleX_bt;  private Button translationX_bt;  private Button AnimatorSet_bt;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);//    對控件進(jìn)行初始化    init();//   此處用的是xml的形式.引用在Xml里的屬性動畫資源. AnimatorInflater.loadAnimator(上下文,R.animator..)222    Animator Xmlanimator = AnimatorInflater.loadAnimator(this, R.animator.objectanimator);//   把要做動畫控件對象放進(jìn)去.Animator.setTarget(View對象);222    Xmlanimator.setTarget(imageView);//   開啟動畫.Animator.start.222    Xmlanimator.start();  }  // 對于控件進(jìn)行初始化  private void init() {    //找到ImageView控件對象    imageView = (ImageButton) findViewById(R.id.animation_iv);    //找到Button控件對象.    alpha_bt = (Button) findViewById(R.id.alpha_bt);    rotationY_bt = (Button) findViewById(R.id.rotationY_bt);    scaleX_bt = (Button) findViewById(R.id.scaleX_bt);    translationX_bt = (Button) findViewById(R.id.translationY_bt);    AnimatorSet_bt = (Button) findViewById(R.id.AnimatorSet_bt);    //為button設(shè)置點擊事件    alpha_bt.setOnClickListener(this);    rotationY_bt.setOnClickListener(this);    scaleX_bt.setOnClickListener(this);    translationX_bt.setOnClickListener(this);    AnimatorSet_bt.setOnClickListener(this);  }  /**   * 根據(jù)點擊事件類型.調(diào)用控件做屬性動畫的   *   * @param view   */  @Override  public void onClick(View view) {    switch (view.getId()) {      case R.id.alpha_bt:        //做透明動畫,參數(shù)1:View,代表你要修改那個控件的屬性. 參數(shù)2:propertyName代表實現(xiàn)什么樣子的動畫:"alpha",String類型.        //參數(shù)3:float... values,控件修改的參數(shù),new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f}        ObjectAnimator alpha = ObjectAnimator.ofFloat(imageView, "alpha", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});        //設(shè)置動畫執(zhí)行時長.setDuration        alpha.setDuration(2000);        //設(shè)置動畫執(zhí)行的模式setRepeatMode,參數(shù)用ObjectAnimator引用.        alpha.setRepeatMode(ObjectAnimator.RESTART);        //設(shè)置動畫執(zhí)行的次數(shù).setRepeatCount        alpha.setRepeatCount(1);        //使用ObjectAnimator對象開啟動畫.        alpha.start();        break;      case R.id.rotationY_bt:        //做旋轉(zhuǎn)動畫,"rotationY".rotationX,rotation new float[]{90f, 180f, 270f, 360f}        ObjectAnimator rotationY = ObjectAnimator.ofFloat(imageView, "rotationY", new float[]{90f, 180f, 270f, 360f});        rotationY.setDuration(2000);        rotationY.setRepeatMode(ObjectAnimator.RESTART);        rotationY.setRepeatCount(1);        rotationY.start();        break;      case R.id.scaleX_bt:        //做縮放動畫,scaleX,scaleY new float[]{1f, 2f, 3f, 4f, 5f, 6f,1f}        ObjectAnimator scaleX = ObjectAnimator.ofFloat(imageView, "scaleX", new float[]{1f, 2f, 3f, 4f, 5f, 6f, 1f});        scaleX.setDuration(2000);        scaleX.setRepeatMode(ObjectAnimator.RESTART);        scaleX.setRepeatCount(1);        scaleX.start();        break;      case R.id.translationY_bt:        //做平移動畫,translationY,translationX new float[]{10f, 20f, 30f, 40f, 60f, 80f}        ObjectAnimator translationY = ObjectAnimator.ofFloat(imageView, "translationY", new float[]{10f, 20f, 30f, 40f, 60f, 80f});        translationY.setDuration(2000);        translationY.setRepeatMode(ObjectAnimator.RESTART);        translationY.setRepeatCount(1);        translationY.start();        //做動畫集合AnimatorSet,分別創(chuàng)建兩個動畫對象.注意playTogether(動畫對象...)和playSequentially的區(qū)別.最后開啟動畫.start      case R.id.AnimatorSet_bt:        AnimatorSet set = new AnimatorSet();        ObjectAnimator oa = ObjectAnimator.ofFloat(imageView, "translationX", new float[]{10f, 20f, 30f, 40f, 60f, 80f});        oa.setDuration(3000);        ObjectAnimator oa2 = ObjectAnimator.ofFloat(imageView, "translationY", new float[]{-10f, -20f, -30f, -40f, -60f, -80f});        oa2.setDuration(3000);        set.playTogether(oa, oa2);        set.start();        break;      default:        break;    }  }}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"><!--  注意background的屬性置為null -->  <Button    android:id="@+id/alpha_bt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="alpha"/>  <Button    android:id="@+id/translationY_bt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="translationY"/>  <Button    android:id="@+id/scaleX_bt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="scaleX"/>  <Button    android:id="@+id/rotationY_bt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="rotationY"/>  <Button    android:id="@+id/AnimatorSet_bt"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="AnimatorSet"/>  <ImageButton    android:onClick="yyyy"    android:id="@+id/animation_iv"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    android:src="@drawable/a8"    android:background="@null"/></LinearLayout>


在res目錄下創(chuàng)建animator文件夾在文件夾里創(chuàng)建以下xml

objectanimator.xml

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"  android:propertyName="rotationX"  android:duration="3000"  android:repeatCount="1"  android:repeatMode="reverse"  android:startOffset="0"  android:valueFrom="360.0"></objectAnimator><!--注意:在xml定義動畫類的屬性,浮點型小數(shù),直接寫小數(shù)即可,不用再帶f.提示:控件位移的參照單位在xml文件里有所不同,不過更簡單,不用再特意去定義參照物屬性了,直接是根據(jù)值,區(qū)分兩種方式:  一種是以整個屏幕為參照物,在xml文件屬性定義值是int%p;  一種以控件自身大小為參照物,在xml文件屬性定義值是int-->

---------------------
作者:FanRQ_
來源:CSDN
原文:https://blog.csdn.net/FanRQ_/article/details/84072052
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长海县| 墨竹工卡县| 侯马市| 淄博市| 裕民县| 防城港市| 大城县| 资溪县| 祁东县| 舞阳县| 西平县| 江门市| 惠安县| 安平县| 高要市| 交城县| 个旧市| 长泰县| 紫阳县| 宁明县| 甘南县| 揭东县| 柯坪县| 垦利县| 玉溪市| 宁安市| 安仁县| 景宁| 肇源县| 泗阳县| 新兴县| 荣昌县| 塘沽区| 舞阳县| 大余县| 商南县| 炉霍县| 桂林市| 彩票| 株洲县| 柳林县|