Detaillierte Erläuterung von Beispielen zum Schreiben von Animationen in XML

Y2J
Freigeben: 2017-04-25 10:06:33
Original
2760 Leute haben es durchsucht

1. Selector

Selector in Android wird hauptsächlich zum Ändern des Standardhintergrunds von ListView- und Button-Steuerelementen verwendet.

1. Erstellen Sie die Datei „mylist_view.xml“
Erstellen Sie zunächst einen neuen Zeichenordner im res-Verzeichnis und dann eine neue Datei „mylist_view.xml“. Neuer Zeichenordner, seine Verzeichnisstruktur ist: res/drawable/mylist_view.xml.
2. Bearbeiten Sie die Datei mylist_view.xml entsprechend den spezifischen Anforderungen
Nachdem Sie eine neue Datei mylist_view.xml erstellt haben, lautet ihre interne Codestruktur:

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

Sie können den gewünschten Stil intern entsprechend den Projektanforderungen definieren. Die Hauptattribute sind wie folgt:

<?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>
Nach dem Login kopieren

3. Zitieren Sie die Datei mylist_view.xml
Es gibt drei Möglichkeiten, auf die Datei zu verweisen, die Sie gerade erstellt haben:
(1) Fügen Sie den folgenden Attributcode zur ListView hinzu
android:listSelector="@drawable/mylist_view"
(2 ) Fügen Sie den folgenden Attributcode zur Elementschnittstelle von ListView hinzu
android:background="@drawable/mylist_view"
(3) Verwenden Sie JAVA-Code, um direkt zu schreiben
Drawable drawable = getResources().getDrawable(R .drawable.mylist_view);
listView.setSelector(drawable);

Um zu verhindern, dass die Liste auf die schwarze Liste gesetzt wird, müssen Sie den folgenden Attributcode zur ListView hinzufügen
android:cacheColorHint= „@android :color/transparent“
Attributeinführung:
android:state_selected selected
android:state_focused erhält den Fokus
android:state_pressed click
android:state_enabled legt fest, ob auf Ereignisse reagiert werden soll bezieht sich auf alle Ereignisse


2. Animationen in XML schreiben
Animationen können auch in XML-Dateien platziert werden, was die Wartbarkeit verbessert des Programms. Die Schritte zum Schreiben von Animationen in XML sind wie folgt:
1. Erstellen Sie einen neuen Ordner mit dem Namen „anim“ im Ordner „res“
2. Erstellen Sie eine XML-Datei, fügen Sie zunächst das Set-Tag hinzu und ändern Sie das Tag wie folgt

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

3. Fügen Sie dem Tag Rotations-, Alpha-, Skalierungs- oder Übersetzungs-Tags hinzu
4. Verwenden Sie AnimationUtils, um die XML-Datei in den Code zu laden und zu generieren Animationsobjekt

Alpha-Animation

<?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);
Nach dem Login kopieren

Skalierungsanimation

<?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>
Nach dem Login kopieren

Animation drehen

<?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>
Nach dem Login kopieren

Animation übersetzen

<?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>
Nach dem Login kopieren

Hier konzentrieren wir uns auf Android:pivotX und Android :pivotY und android :fromXDelta,android:toXDelta
android:pivotX="50"Absolute Koordinaten verwenden
android:pivotX="50%"relativ zu sich selbst
android:pivotX="50%p"relativ zur Kindersicherung


Wie heißen diese Animationen?
heißt in style.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>
Nach dem Login kopieren

注:在/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。
 

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen zum Schreiben von Animationen in XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!