自定義控件動畫篇(四)ObjectAnimator的使用

ObjectAnimator 是 Android 屬性動畫框架中的一個重要組件,它允許你針對特定屬性的值進行動畫處理。與 ValueAnimator 相比,ObjectAnimator 更專注于 UI 組件,可以直接作用于視圖的屬性,如位置、尺寸、透明度等,而無需手動更新這些屬性。下面是 ObjectAnimator 的基本使用和一些高級技巧。

基本使用

  1. 創建 ObjectAnimator

    ?

    創建 ObjectAnimator 最簡單的方法是使用靜態工廠方法 ofFloat(), ofInt(), ofArgb() 等,但更常用的是通過指定目標對象和要動畫化的屬性名稱來創建。

    Java
    1ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);

    或者使用 ObjectAnimator 的構造函數:

    Java
    1ObjectAnimator animator = new ObjectAnimator();
    2animator.setTarget(view);
    3animator.setPropertyName("alpha");
    4animator.setFloatValues(0f, 1f);
  2. 設置動畫時長

    ?

    使用 setDuration(long duration) 方法設置動畫持續時間。

    Java
    1animator.setDuration(1000);
  3. 啟動動畫

    ?

    調用 start() 方法開始動畫。

    Java
    1animator.start();

高級使用

動畫組合

可以使用 AnimatorSet 來組合多個動畫,實現并行或順序播放。

Java

1AnimatorSet set = new AnimatorSet();
2set.playSequentially(ObjectAnimator.ofFloat(view1, "translationX", 0f, 100f),
3                     ObjectAnimator.ofFloat(view2, "translationY", 0f, 100f));
4set.start();
自定義屬性動畫

如果需要對自定義屬性進行動畫處理,可以通過實現 Property 類來自定義屬性訪問器,并將其傳遞給 ObjectAnimator

Java

1class MyView extends View {
2    private float myCustomValue;
3
4    public MyView(Context context) {
5        super(context);
6    }
7
8    public static final Property<MyView, Float> MY_CUSTOM_PROPERTY = new Property<MyView, Float>(Float.class, "myCustomProperty") {
9        @Override
10        public Float get(MyView object) {
11            return object.myCustomValue;
12        }
13
14        @Override
15        public void set(MyView object, Float value) {
16            object.myCustomValue = value;
17        }
18    };
19}
20
21// 在動畫中使用自定義屬性
22ObjectAnimator.ofFloat(myView, MyView.MY_CUSTOM_PROPERTY, 0f, 1f).setDuration(1000).start();
動畫監聽器

使用 AnimatorListenerAdapter 或直接實現 Animator.AnimatorListener 接口,可以監聽動畫的開始、結束、取消和重復事件。

Java

1animator.addListener(new Animator.AnimatorListener() {
2    @Override
3    public void onAnimationStart(Animator animation) {}
4
5    @Override
6    public void onAnimationEnd(Animator animation) {}
7
8    @Override
9    public void onAnimationCancel(Animator animation) {}
10
11    @Override
12    public void onAnimationRepeat(Animator animation) {}
13});
動畫延遲和循環

使用 setStartDelay(long delay) 可以設置動畫開始前的延遲時間,而 setRepeatCount(int count)setRepeatMode(int mode) 可以設置動畫的重復次數和模式。

Java
1animator.setRepeatCount(ValueAnimator.INFINITE); // 無限循環
2animator.setRepeatMode(ValueAnimator.REVERSE); // 每次循環后反向播放

ObjectAnimator 提供了一個簡潔的接口來創建和控制動畫,特別適用于 UI 視圖的屬性動畫。通過上述技巧,你可以實現復雜且流暢的動畫效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38361.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38361.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38361.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

詳細闡述 Spring Boot 的核心概念、優勢、開發流程、常見配置以及最佳實踐

Spring Boot 是一種基于 Java 的框架&#xff0c;它簡化了基于 Spring 的應用開發。通過自動配置和嵌入式服務器等技術&#xff0c;Spring Boot 使得開發者可以快速搭建并運行 Spring 應用。下面&#xff0c;我將詳細闡述 Spring Boot 的核心概念、優勢、開發流程、常見配置以及…

閉包的不同形式

定義 **閉包&#xff08;closure&#xff09;**是一個函數以及其捆綁的周邊環境狀態&#xff08;lexical environment&#xff0c;詞法環境&#xff09;的引用的組合。換而言之&#xff0c;閉包讓開發者可以從內部函數訪問外部函數的作用域。在 JavaScript 中&#xff0c;閉包…

【Jetpack】ViewModel使用技巧

ViewModel的基本使用方法&#xff0c;這里不再講解 ViewModel優點 可以在屏幕旋轉之后&#xff0c;仍然保持之前的狀態&#xff0c;這樣就不用刻意去處理屏幕旋轉事件可以輕松實現作用域內的單例模式可以輕松在作用域內進行數據共享 ViewMode使用注意 不能將Activity作為Co…

Centos7修改yum源

安裝好系統后&#xff0c;網絡能通信&#xff0c;源也沒有配置&#xff0c;但是安裝軟件失敗。 解決辦法&#xff1a;配置阿里yum源 # curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # yum clean all # yum make cache再次安裝軟…

AI安全研究滯后?清華專家團來支招

在21世紀的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;無疑是最為耀眼的一抹亮色。隨著技術的不斷突破&#xff0c;AI正以前所未有的速度融入我們的日常生活&#xff0c;重塑著社會、經濟乃至人類文明的面貌。然而&#xff0c;在這股洶涌澎湃的發展洪流中&#…

二分查找1

1. 二分查找&#xff08;704&#xff09; 題目描述&#xff1a; 算法原理&#xff1a; 暴力解法就是遍歷數組來找到相應的元素&#xff0c;使用二分查找的解法就是每次在數組中選定一個元素來將數組劃分為兩部分&#xff0c;然后因為數組有序&#xff0c;所以通過大小關系舍棄…

七天速通javaSE:第五天 數組基礎

文章目錄 前言一、認識數組二、數組的聲明和創建1. 聲明數組變量2. 創建數組3. 變量的初始化&#xff08;賦值&#xff09;3.1 靜態初始化3.2 動態初始化 3. 示例 三、數組的使用1. 循環1.1 普通for循環1.2 For-Each 循環 2. 數組作為函數的參數和返回值 前言 本文將為大家介紹…

Win11 Python3.10 安裝pytorch3d

0&#xff0c;背景 Python3.10、cuda 11.7、pytorch 2.0.1 閱讀【深度學習】【三維重建】windows10環境配置PyTorch3d詳細教程-CSDN博客 1&#xff0c;解決方法 本來想嘗試&#xff0c;結果發現CUB安裝配置對照表里沒有cuda 11.7對應的版本&#xff0c;不敢輕舉妄動&#x…

0051__win - RegisterWaitForSingleObject的例子

win - RegisterWaitForSingleObject的例子_registerwaitforsingleobject msdn-CSDN博客

DP:子序列問題

文章目錄 什么是子序列子序列的特點舉例說明常見問題 關于子序列問題的幾個例題1.最長遞增子序列2.擺動序列3.最長遞增子序列的個數4.最長數對鏈5.最長定差子序列 總結 什么是子序列 在計算機科學和數學中&#xff0c;子序列&#xff08;Subsequence&#xff09;是指從一個序列…

c語言的燙燙燙燙燙??

當初學習C語言時&#xff0c;對于一些特殊的打印輸出可能會感到困惑&#xff0c;比如會出現一堆亂碼燙燙燙的情況。其實這是因為在C語言中&#xff0c;對于字符類型和數字類型之間的隱式轉換可能會導致打印輸出的結果不符合預期。這并不意味著程序員"燙"&#xff0c;…

[激光原理與應用-96]:激光器研發與生產所要的常見設備(大全)與儀器(圖解)

目錄 一、激光器制造設備 二、測試與校準設備 2.1 光功率計&#xff1a; 1、工作原理 2、主要功能 3、應用場景 4、測量方法 5、總結 2.2. 激光束質量分析儀&#xff1a; 1、概述 2、主要功能和特點 3、工作原理 4、常見品牌和型號 5、應用領域 6、總結 2.3 光…

力扣-2529. 正整數和負整數的最大計數

文章目錄 力扣題目代碼工程 力扣題目 給你一個按 非遞減順序 排列的數組 nums &#xff0c;返回正整數數目和負整數數目中的最大值。 換句話講&#xff0c;如果 nums 中正整數的數目是 pos &#xff0c;而負整數的數目是 neg &#xff0c;返回 pos 和 neg二者中的最大值。 注…

機器人運動范圍檢測 c++

地上有一個m行n列的方格&#xff0c;一個機器人從坐標&#xff08;0&#xff0c;0&#xff09;的格子開始移動&#xff0c;它每次可以向上下左右移動一個格子&#xff0c;但不能進入行坐標和列坐標的位數之和大于k的格子&#xff0c;請問機器人能夠到達多少個格子 #include &l…

基于大數據架構的情感分析

1 項目介紹 1.1 研究目的和意義 隨著大數據時代的到來&#xff0c;電影產業積累了海量的用戶評論數據&#xff0c;這些數據中蘊含著觀眾的情感傾向與偏好信息&#xff0c;為電影推薦和市場策略制定提供了寶貴資源。然而&#xff0c;如何高效地從這浩瀚的數據海洋中提煉出有價…

QT5:在窗口右上角顯示圖標

目錄 一、環境與目標 二、實現邏輯&#xff08;純代碼&#xff09;與效果 三、參考代碼 四、總結 一、環境與目標 qt版本&#xff1a;5.12.7 windows 11 下的 Qt Designer &#xff08;已搭建&#xff09; 目標&#xff1a;使用嵌套布局的方式將兩個按鈕顯示在窗口右上角…

《大海》這歌為何經久不衰?你看歌詞寫的多美妙!

《大海》這歌為何經久不衰&#xff1f;你看歌詞寫的多美妙&#xff01; 《大海》是一首由陳大力作詞&#xff0c;陳大力、陳秀男作曲&#xff0c;Ricky Ho編曲&#xff0c;張雨生演唱的國語流行歌曲。該曲收錄在張雨生1992年11月30日由飛碟唱片發行的同名專輯《大海》中。 作為…

【JavaEE精煉寶庫】多線程進階(2)synchronized原理、JUC類——深度理解多線程編程

一、synchronized 原理 1.1 基本特點&#xff1a; 結合上面的鎖策略&#xff0c;我們就可以總結出&#xff0c;synchronized 具有以下特性(只考慮 JDK 1.8)&#xff1a; 開始時是樂觀鎖&#xff0c;如果鎖沖突頻繁&#xff0c;就轉換為悲觀鎖。 開始是輕量級鎖實現&#xff…

廣州外貿建站模板

Yamal外貿獨立站wordpress主題 綠色的亞馬爾Yamal外貿獨立站wordpress模板&#xff0c;適用于外貿公司建獨立站的wordpress主題。 https://www.jianzhanpress.com/?p7066 賽斯科Sesko-W外貿建站WP主題 適合機械設備生產廠家出海做外貿官網的wordpress主題&#xff0c;紅橙色…

Dify自定義工具例子

1.天氣&#xff08;JSON&#xff09; {"openapi": "3.1.0","info": {"title": "Get weather data","description": "Retrieves current weather data for a location.","version": "v1…