Maison >développement back-end >Tutoriel XML/RSS >Explication détaillée d'exemples d'écriture d'animation en XML

Explication détaillée d'exemples d'écriture d'animation en XML

Y2J
Y2Joriginal
2017-04-25 10:06:332781parcourir

1. Sélecteur

Le sélecteur dans Android est principalement utilisé pour modifier l'arrière-plan par défaut des contrôles ListView et Button.

1. Créez le fichier mylist_view.xml
Créez d'abord un nouveau dossier dessinable dans le répertoire res, puis créez un nouveau mylist_view.xml dans le répertoire res. nouveau dossier dessinable, sa structure de répertoires est : res/drawable/mylist_view.xml.
2. Modifiez le fichier mylist_view.xml en fonction de besoins spécifiques
Après avoir créé un nouveau fichier mylist_view.xml, sa structure de code interne est :

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

Vous pouvez définir le style que vous souhaitez en interne selon les exigences du projet. Les principaux attributs sont les suivants :

<?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. Citer le fichier mylist_view.xml.
Il existe trois façons de référencer le fichier que vous venez de créer :
(1) Ajoutez le code d'attribut suivant au ListView
android:listSelector="@drawable/mylist_view"
(2 ) Ajoutez le code d'attribut suivant à l'interface d'élément de ListView
android:background="@drawable/mylist_view"
(3) Utilisez le code JAVA pour écrire directement
Drawable drawable = getResources().getDrawable(R .drawable.mylist_view);
listView.setSelector(drawable);

Afin d'éviter que la liste ne soit mise sur liste noire, vous devez ajouter le code d'attribut suivant à ListView
android:cacheColorHint= "@android :color/transparent"
Introduction de l'attribut :
android:state_selected selected
android:state_focused obtient le focus
android:state_pressed click
android:state_enabled définit s'il faut répondre aux événements, ce qui fait référence à tous les événements


2. Écrire une animation en XML
L'animation peut également être placée dans des fichiers XML, ce qui améliore la maintenabilité. du programme. Les étapes pour écrire une animation en XML sont les suivantes
1. Créez un nouveau dossier nommé anim sous le dossier res
2. Créez un fichier XML et ajoutez d'abord la balise set, modifiez la balise comme suit.

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

3. Ajoutez des balises de rotation, alpha, d'échelle ou de traduction à la balise
4. Utilisez AnimationUtils dans le code pour charger le fichier XML et générer le fichier XML. Objet d'animation

Animation alpha

<?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);

Animation à l'échelle

<?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>

Faire pivoter l'animation

<?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>

Traduire l'animation

<?xml version="1.0" encoding="utf-8"?>    
<set xmlns:android="http://schemas.android.com/apk/res/android"    
    android:interpolator="@android:anim/accelerate_interpolator">    
    <translate    
        android:fromXDelta="50%"    
        android:toXDelta="100%"    
        android:fromYDelta="50%"    
        android:toYDelta="100%"    
        android:duration="3000"    
    />      
</set>

Ici, nous nous concentrons sur Android : pivotX et Android :pivotY et android :fromXDelta,android:toXDelta
android:pivotX="50"Utiliser les coordonnées absolues
android:pivotX="50%"par rapport à soi
android:pivotX="50%p"relative au contrôle parental


Comment s'appellent ces animations ?
est appelé dans 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。
 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn