# 1. LayoutAnimation
用于為`ViewGroup`指定一個動畫,其子元素也就具有了它的出場動畫效果。這種效果常用在`ListView`上。
# 2. 屬性
在`res/anim`目錄下新建一個`layoutanimation01.xml`的文件:
~~~
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.5"
android:animationOrder="normal"
android:interpolator="@android:anim/linear_interpolator"
android:animation="@anim/item_anim"
>
</layoutAnimation>
~~~
* `android:delay`指定子元素開始動畫的時間延遲,如果元素入場的時間周期為300ms,那么`android:delay="0.5"`就表示150ms。
* `android:animationOrder`指定子元素的動畫順序,有三種取值,`normal`表示順序出現,`reverse`表示反序,`random`表示隨機。
* `android:interpolator`用來指定后影響動畫的播放速度。
* `android:animation`指定具體的每個子元素的播放動畫,這里指定為一個動畫文件,即:`res/anim/item_anim.xml`文件。
`item_anim.xml`文件內容如下:
~~~
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:shareInterpolator="true"
>
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"/>
<scale
android:fromXScale="1"
android:toXScale="1.2"
android:fromYScale="1"
android:toYScale="1.2"/>
</set>
~~~
應用了透明度動畫,從不可見到可見,同時進行了略微的縮放。指定時間為200ms。當然,這里的應用為,直接在布局文件的`ListView`標簽中指定`android:layoutAnimation`:
~~~
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutAnimation="@anim/layoutanimation01"
android:background="#ffEEEEEE"
android:divider="#dddbdb"
android:dividerHeight="1dp"
/>
~~~
然后在`Activity`中進行數據裝填即可:
~~~
list_view.adapter = ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
listOf("123", "測試項", "123", "測試項")
)
~~~
效果為從第一個`item`到最后一個,依次顯現到略微放大的動態效果。`gif`轉化會丟失這個效果,這里就不貼圖了。
# 3. 代碼動態指定
類似的,也可以使用`kotlin`代碼來直接指定,首先在`layoutanimation01.xml`中刪除對應的`android:animation`:
~~~
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.5"
android:animationOrder="normal"
android:interpolator="@android:anim/linear_interpolator"
>
</layoutAnimation>
~~~
代碼設置:
~~~
val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.item_anim)
val layoutAnimationController = LayoutAnimationController(loadAnimation)
layoutAnimationController.delay = 0.5f
layoutAnimationController.order = LayoutAnimationController.ORDER_NORMAL
list_view.layoutAnimation = layoutAnimationController
list_view.adapter = ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
listOf("123", "測試項", "123", "測試項")
)
~~~
- 介紹
- UI
- MaterialButton
- MaterialButtonToggleGroup
- 字體相關設置
- Material Design
- Toolbar
- 下拉刷新
- 可折疊式標題欄
- 懸浮按鈕
- 滑動菜單DrawerLayout
- NavigationView
- 可交互提示
- CoordinatorLayout
- 卡片式布局
- 搜索框SearchView
- 自定義View
- 簡單封裝單選
- RecyclerView
- xml設置點擊樣式
- adb
- 連接真機
- 小技巧
- 通過字符串ID獲取資源
- 自定義View組件
- 使用系統控件重新組合
- 旋轉菜單
- 輪播圖
- 下拉輸入框
- 自定義VIew
- 圖片組合的開關按鈕
- 自定義ViewPager
- 聯系人快速索引案例
- 使用ListView定義側滑菜單
- 下拉粘黏效果
- 滑動沖突
- 滑動沖突之非同向沖突
- onMeasure
- 繪制字體
- 設置畫筆Paint
- 貝賽爾曲線
- Invalidate和PostInvalidate
- super.onTouchEvent(event)?
- setShadowLayer與陰影效果
- Shader
- ImageView的scaleType屬性
- 漸變
- LinearGradient
- 圖像混合模式
- PorterDuffXfermode
- 橡皮擦效果
- Matrix
- 離屏繪制
- Canvas和圖層
- Canvas簡介
- Canvas中常用操作總結
- Shape
- 圓角屬性
- Android常見動畫
- Android動畫簡介
- View動畫
- 自定義View動畫
- View動畫的特殊使用場景
- LayoutAnimation
- Activity的切換轉場效果
- 屬性動畫
- 幀動畫
- 屬性動畫監聽
- 插值器和估值器
- 工具
- dp和px的轉換
- 獲取屏幕寬高
- JNI
- javah命令
- C和Java相互調用
- WebView
- Android Studio快捷鍵
- Bitmap和Drawable圖像
- Bitmap簡要介紹
- 圖片縮放和裁剪效果
- 創建指定顏色的Bitmap圖像
- Gradle本地倉庫
- Gradle小技巧
- RxJava+Okhttp+Retrofit構建網絡模塊
- 服務器相關配置
- node環境配置
- 3D特效