ホームページ  >  記事  >  バックエンド開発  >  XMLでのアニメーションの記述例を詳しく解説

XMLでのアニメーションの記述例を詳しく解説

Y2J
Y2Jオリジナル
2017-04-25 10:06:332758ブラウズ

1. セレクター

Android のセレクターは、主に ListView コントロールと Button コントロールのデフォルトの背景を変更するために使用されます。

1. mylist_view.xml ファイルを作成します
まず、res ディレクトリに新しいdrawable フォルダーを作成し、次に新しく作成したdrawable フォルダーに新しい mylist_view.xml を作成します。ディレクトリ構造は次のとおりです: res/drawable/ mylist_view.xml。
2. 特定のニーズに応じて mylist_view.xml ファイルを編集します
新しい mylist_view.xml ファイルを作成した後、属性が追加されていない場合、その内部コード構造は次のようになります:

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:android="http://schemas.android.com/apk/res/android">        
</selector>

以下は内部的に次のように定義できます。プロジェクトの要件に従って、必要なスタイル、主な属性は次のとおりです:

<?xml version="1.0" encoding="utf-8" ?>       
<selector xmlns:android="http://schemas.android.com/apk/res/android">     
<!-- 默认时的背景图片-->      
  <item android:drawable="@drawable/pic1" />        
<!-- 没有焦点时的背景图片 -->      
  <item android:state_window_focused="false"       
        android:drawable="@drawable/pic1" />       
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->      
  <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" />     
<!-- 触摸模式下单击时的背景图片-->      
<item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />      
<!--选中时的图片背景-->      
  <item android:state_selected="true"   android:drawable="@drawable/pic4" />       
<!--获得焦点时的图片背景-->      
  <item android:state_focused="true"   android:drawable="@drawable/pic5" />       
</selector>

3. mylist_view.xml ファイルを参照します
作成したファイルを参照するには 3 つの方法があります:
(1) 追加ListViewに以下の属性コードを追加
android :listSelector="@drawable/mylist_view"
(2) ListViewの項目インターフェースに以下の属性コードを追加
android:background="@drawable/mylist_view"
(3) JAVAを使用直接書き込むコード
Drawabledrawable = getResources() .getDrawable(R.drawable.mylist_view);

リストがブラックリストに登録されないようにするには、次の属性コードを追加する必要があります。 ListView
android:cacheColorHint="@android:color/transparent "
属性の導入:
android:state_selected selected
android:state_focused フォーカスを取得
android:state_pressed click
android:state_enabled すべてを参照するイベントに応答するかどうかを設定しますイベント


2. XML でアニメーションを記述する
アニメーション XML ファイルに配置することもできるため、プログラムの保守性が向上します。 XMLでアニメーションを記述する手順は以下の通りです
1. resフォルダーの下にanimという名前の新しいフォルダーを作成します2.まず設定したタグを追加し、タグを次のように変更します

3. このタグに回転、アルファ、スケール、または変換タグを追加します

4.AnimationUtils を使用してコードに XML ファイルをロードし、アニメーション オブジェクトを生成します
アルファ アニメーション

<set xmlns:android="http://schemas.android.com/apk/res/android"  
    android:interpolator="@android:anim/accelerate_interpolator">   
</set>

スケール アニメーション

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <alpha    
        android:fromAlpha="1.0"    
        android:toAlpha="0.0"    
        android:startOffset="500"    
        android:duration="2000"    
            />      
</set>  
Animation a=AnimationUtils.loadAnimation(this, R.anim.alpha);  
iv.startAnimation(a);

アニメーションを回転

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <scale    
        android:fromXScale="1.0"    
        android:toXScale="0.0"    
        android:fromYScale="1.0"    
        android:toYScale="0.0"    
        android:pivotX="50%"    
        android:pivotY="50%"    
        android:duration="2000"    
    />      
</set>

アニメーションを翻訳

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <rotate    
        android:fromDegrees="0"    
        android:toDegrees="400"    
        android:pivotX="50%"    
        android:pivotY="50%"    
        android:duration="3000"    
    />      
</set>

ここでは、絶対座標を使用した android:pivotX と android:pivotY と android:fromXDelta、android:toXDelta

android:pivotX="50" に焦点を当てます。 android:pivotX="50 %"自分自身を基準に
android:pivotX="50%p"親コントロールを基準に



これらのアニメーションはどのように呼ばれますか? styles.xml を呼び出します:

<?xml version="1.0" encoding="utf-8"?>  
<resources>      
    <style mce_bogus="1" name="ThemeActivity">  
        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>  
         <item name="android:windowNoTitle">true</item>  
    </style>      
    <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">  
        <item name="android:activityOpenEnterAnimation">@anim/translate</item>  
         <item name="android:activityOpenExitAnimation">@anim/rotate</item>  
          <item name="android:activityCloseEnterAnimation">@anim/close_enter</item>  
           <item name="android:activityCloseExitAnimation">@anim/close_exit</item>  
    </style>      
</resources>

注:在/res 目录下新建 anim 目录,上面的Translate.xml,Scale.xml都是在这个文件夹下新建的。

3> Interpolator -- 定义动画变化的速率
① AccelerateDecelerateInterpolator:
   在动画开始和结束的地方速率改变比较慢,在中间的时候加速;
② AccelaerateInterPolotor:
    在动画开始的地方速率改变比较慢,然后开始加速;
③ CycleInterpolator:
动画循环播放特定的次数,速率沿着正弦曲线
④ DecelerateInterpolator:
在动画结束的地方速率比较慢
⑤ LinearInterpolator:
动画以匀速运动

在xml文件中定义Interpolator
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
这样所有的Animation共用一个Interpolator。
在代码中用代码设置如下
anim.setInterpolator(new AccelerateInterpolator());
在new一个AnimationSet中传入true则所有的Animation共用Interpolator。
 

以上がXMLでのアニメーションの記述例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。