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

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

Android屬性動(dòng)畫特點(diǎn)詳解

2019-10-21 21:35:21
字體:
供稿:網(wǎng)友

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

MainActivity.java

/*屬性動(dòng)畫的特點(diǎn):動(dòng)畫效果會(huì)改變控件的位置.且開啟動(dòng)畫的是動(dòng)畫對(duì)象,而不是控件對(duì)象.    只有旋轉(zhuǎn)的屬性動(dòng)畫是經(jīng)常用的,注意參數(shù).    注意:這些方法都是安卓在3.0以后出現(xiàn)的新特性,所以要把AndroidManifest.xml里的android:minSdkVersion值修改為11以上*///注釋后面有222的暫時(shí)不用管.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);//    對(duì)控件進(jìn)行初始化    init();//   此處用的是xml的形式.引用在Xml里的屬性動(dòng)畫資源. AnimatorInflater.loadAnimator(上下文,R.animator..)222    Animator Xmlanimator = AnimatorInflater.loadAnimator(this, R.animator.objectanimator);//   把要做動(dòng)畫控件對(duì)象放進(jìn)去.Animator.setTarget(View對(duì)象);222    Xmlanimator.setTarget(imageView);//   開啟動(dòng)畫.Animator.start.222    Xmlanimator.start();  }  // 對(duì)于控件進(jìn)行初始化  private void init() {    //找到ImageView控件對(duì)象    imageView = (ImageButton) findViewById(R.id.animation_iv);    //找到Button控件對(duì)象.    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è)置點(diǎn)擊事件    alpha_bt.setOnClickListener(this);    rotationY_bt.setOnClickListener(this);    scaleX_bt.setOnClickListener(this);    translationX_bt.setOnClickListener(this);    AnimatorSet_bt.setOnClickListener(this);  }  /**   * 根據(jù)點(diǎn)擊事件類型.調(diào)用控件做屬性動(dòng)畫的   *   * @param view   */  @Override  public void onClick(View view) {    switch (view.getId()) {      case R.id.alpha_bt:        //做透明動(dòng)畫,參數(shù)1:View,代表你要修改那個(gè)控件的屬性. 參數(shù)2:propertyName代表實(shí)現(xiàn)什么樣子的動(dòng)畫:"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è)置動(dòng)畫執(zhí)行時(shí)長.setDuration        alpha.setDuration(2000);        //設(shè)置動(dòng)畫執(zhí)行的模式setRepeatMode,參數(shù)用ObjectAnimator引用.        alpha.setRepeatMode(ObjectAnimator.RESTART);        //設(shè)置動(dòng)畫執(zhí)行的次數(shù).setRepeatCount        alpha.setRepeatCount(1);        //使用ObjectAnimator對(duì)象開啟動(dòng)畫.        alpha.start();        break;      case R.id.rotationY_bt:        //做旋轉(zhuǎn)動(dòng)畫,"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:        //做縮放動(dòng)畫,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:        //做平移動(dòng)畫,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();        //做動(dòng)畫集合AnimatorSet,分別創(chuàng)建兩個(gè)動(dòng)畫對(duì)象.注意playTogether(動(dòng)畫對(duì)象...)和playSequentially的區(qū)別.最后開啟動(dòng)畫.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定義動(dòng)畫類的屬性,浮點(diǎn)型小數(shù),直接寫小數(shù)即可,不用再帶f.提示:控件位移的參照單位在xml文件里有所不同,不過更簡單,不用再特意去定義參照物屬性了,直接是根據(jù)值,區(qū)分兩種方式:  一種是以整個(gè)屏幕為參照物,在xml文件屬性定義值是int%p;  一種以控件自身大小為參照物,在xml文件屬性定義值是int-->

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石河子市| 广丰县| 雷波县| 文安县| 阳谷县| 建湖县| 温泉县| 常宁市| 镇原县| 汝州市| 珠海市| 桑日县| 泸水县| 明光市| 青岛市| 嘉善县| 陈巴尔虎旗| 万全县| 抚远县| 勃利县| 合江县| 永康市| 镇巴县| 连城县| 华池县| 阿拉善盟| 库尔勒市| 富蕴县| 白银市| 五莲县| 贵阳市| 商洛市| 四会市| 大埔县| 铁岭县| 兴山县| 洛浦县| 托克托县| 惠水县| 安国市| 克东县|