中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在xml中如何實現動畫

發布時間:2021-09-17 11:39:33 來源:億速云 閱讀:225 作者:小新 欄目:編程語言

這篇文章主要介紹在xml中如何實現動畫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

1. Selector

Android中的Selector主要是用來改變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文件
三種方法可以來引用剛才創建的文件:
(1)在ListView中添加如下屬性代碼
android:listSelector="@drawable/mylist_view"
(2)在ListView的item界面中添加如下屬性代碼
android:background="@drawable/mylist_view"  
(3)利用JAVA代碼直接編寫
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);  
listView.setSelector(drawable);  
為了防止列表拉黑的情況發生,需要在ListView中添加以下的屬性代碼
android:cacheColorHint="@android:color/transparent"  
屬性介紹:
android:state_selected選中
android:state_focused獲得焦點
android:state_pressed點擊
android:state_enabled設置是否響應事件,指所有事件
2. 在XML中寫動畫
Animation也可以放在XML文件中,這樣程序的可維護性提高了。在XML中寫動畫的步驟如下
1.在res文件夾下面新建一個名為anim的文件夾
2.創建xml文件,并首先加入set標簽,改標簽如下

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

3.在該標簽當中加入rotate,alpha,scale或者translate標簽
4.在代碼當中使用AnimationUtils加載xml文件,并生成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);

Scale動畫

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

Rotate動畫

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

Translate動畫

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

這里重點提一下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中如何實現動畫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xml
AI

遵化市| 博野县| 马山县| 江安县| 五指山市| 礼泉县| 雅安市| 原阳县| 天镇县| 革吉县| 驻马店市| 石柱| 修武县| 开江县| 治多县| 方正县| 淮阳县| 南溪县| 台中县| 盐山县| 杭锦后旗| 玉环县| 沛县| 大田县| 阜南县| 克山县| 北辰区| 澄城县| 嘉禾县| 句容市| 图木舒克市| 石阡县| 永康市| 小金县| 宁陵县| 巴马| 太康县| 玛曲县| 海安县| 弥渡县| 惠安县|