第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android屬性動畫賞析

難度中級
時長 1小時20分
學習人數(shù)
綜合評分9.80
125人評價 查看評價
9.9 內(nèi)容實用
9.8 簡潔易懂
9.7 邏輯清晰
  • 總結(jié)——常用屬性 我們通過 ObjectAnimator 可以調(diào)用各種屬性,只要這個屬性具有g(shù)et/set方法,我們就可以操縱它,如果這個屬性沒有提供get/set方法,或者我們想自定義一個屬性,來讓它進行一些改變,那么我們就要定義一個Property(屬性),去實現(xiàn)它的set/get方法,就可以操作這樣一個屬性。 ObjectAnimator常用的一些操作屬性: 1. translationX\translationY 2. rotation、rotationX\rotationY,這里的rotation是指3D的旋轉(zhuǎn)。rotationX是水平方向的旋轉(zhuǎn),rotationY是垂直方向的旋轉(zhuǎn)。 3. scaleX\scaleY 水平、垂直方向的縮放。 4. X\Y 具體會移動到的某個點。 5. alpha 透明度 屬性動畫框架執(zhí)行的效率更高、效果更好。 總結(jié)——常用方法、類 1. ValueAnimator 數(shù)值發(fā)生器,可以實現(xiàn)很多很靈活的動畫效果 2. ObjectAnimator 是ValueAnimator的一個子類,它封裝了ValueAnimator,讓我們更輕松地使用屬性動畫框架。我們通過ObjectAnimator來操作一個對象的屬性,讓對象產(chǎn)生一個動畫效果。 3. AnimatorUpdateListener 監(jiān)聽事件 4. AnimatorListenerAdapter 監(jiān)聽事件 5. PropertyValuesHolder 控制動畫集合的顯示效果、順序和流程控制 6. AnimatorSet 控制動畫集合的顯示效果、順序和流程控制 7. TypeEvaluators 值計算器 8. Interpolators 插值器 值計算器和插值器用來控制具體產(chǎn)生的數(shù)值的一個變化規(guī)律以及變化狀態(tài)。 總結(jié)——Interpolater圖示(如圖) 表格代表了所有值的變化范圍,曲線代表產(chǎn)生的數(shù)值是如何變化的。這也就是插值器的概念。
    查看全部
  • 除了ValueAnimator.ofInt(),還有其他類型的數(shù)字生成器,其中ValueAnimator.ofObject()可以實現(xiàn)自定義的數(shù)字生成器。 參數(shù)中的fraction就是時間因子(0到1之間變化的數(shù)值)。通過fraction、startValue、endValue,通過各種各樣的計算方式,就可以生成所有想要產(chǎn)生的值,不光能產(chǎn)生普通數(shù)據(jù)結(jié)構(gòu),通過泛型還可以定義更為復雜的數(shù)據(jù)結(jié)構(gòu)。 ValueAnimator animator = ValueAnimator.ofObject(new TypeEvaluator() { @Override public Object evaluate(float fraction, Object startValue, Object endValue) { return null; } }); 生成泛型PointF(float類型的點坐標): ValueAnimator animator = ValueAnimator.ofObject(new TypeEvaluator<PointF>() { @Override public PointF evaluate(float fraction, PointF startValue, PointF endValue) { return null; } }); 在方法evaluate()中可以添加各種各樣的計算方式。 ---------- 第二重境界學無止境,ValueAnimator不僅僅可以應用于動畫,也可以應用于Android的其他領(lǐng)域。
    查看全部
  • 1. 之前學過ObjectAnimator是作用于某一控件的某一屬性,而ValueAnimator本身不作用于任何屬性,本身也不會提供任何動畫,簡單而言,ValueAnimator是一個數(shù)值發(fā)生器,可以產(chǎn)生任何你想要的數(shù)值,Android系統(tǒng)給它提供了很多數(shù)值計算方法。 2. 那么,產(chǎn)生這些數(shù)值有什么用呢?其實,在屬性動畫中,如何產(chǎn)生每一步的具體動畫效果,都是通過 ValueAnimator 計算出來的。比如要實現(xiàn)一個0到100的位移動畫,隨著時間的持續(xù),數(shù)值也從0到100遞增,有這些值,就可以作用這些屬性,讓它產(chǎn)生動畫效果。 3. 那么,ValueAnimator 是如何產(chǎn)生這些值的呢? 首先,ValueAnimator 會根據(jù)動畫已經(jīng)進行的時間和總時間的比值,產(chǎn)生一個0到1的時間因子,有了這樣的時間因子,經(jīng)過相應的變換,就可以根據(jù)你的StartValue和EndValue,來生成中間的相應的值。同時,通過插值器的使用,我們還可以進一步控制每一個時間因子的產(chǎn)生值的變化速度,比如我們使用線性插值器,生成數(shù)值的時候就是一個線性變化,只要時間相同,增量就相同。 由于 ValueAnimator 本身不響應任何一個動畫,也不能控制任何一個屬性,所以它并沒有 ObjectAnimator 使用得那么廣泛。 4. 查看源碼,我們可以發(fā)現(xiàn) ObjectAnimator 是繼承了 ValueAnimator。之前也說過了,正是由于 ValueAnimator 產(chǎn)生的動畫變化的變化值,ObjectAnimator 才可以將它應用于我們的屬性。因此,ObjectAnimator 實際上是對ValueAnimator的封裝。 5. 那么,如何通過 ValueAnimator 去實現(xiàn)動畫效果呢?這就需要使用動畫監(jiān)聽事件了,我們可以監(jiān)聽ValueAnimator每一步所產(chǎn)生的值,通過這個值去實現(xiàn)相應的動畫效果。 案例:使用ValueAnimator實現(xiàn)計數(shù)器: 如圖所示的例子中,先使用ValueAnimator.ofInt(0,100)獲取0到100之間的所有數(shù)字,并設置一個時間為5秒,然后,通過監(jiān)聽器(調(diào)用addUpdateListener())的監(jiān)聽事件,獲取 ValueAnimator每一步變化所產(chǎn)生的值,通過這些值去設置Button的顯示文字。至此,就實現(xiàn)了一個簡單的計數(shù)器。
    查看全部
  • 以下摘自評論區(qū): (float) (Math.sin(Math.toRadians((i - 1) * 90 / (6 - 1))) * 200) 其中,6是要展開的圖標數(shù),200是半徑。 按照上面程序加入translationX,和translationY中可以以扇形展開。 ------------ 案例中這個程序有一個bug,就是當動畫還未完全展開的時候,此時再點擊紅色按鈕,程序會響應回收圖片的事件,由于圖片還未完全展開,導致出現(xiàn)動畫展開和回收一起出現(xiàn)的混亂場面。 ------------- 解決動畫期間按鈕可以點擊的bug:在for循環(huán)外面增加ObjectAnimator的addListener的onAnimationEnd方法,在startAnim開始時設置按鈕不可點擊:mImageViews.get(0).setEnabled(false),在onAnimationEnd方法中恢復按鈕點擊事件:mImageViews.get(0).setEnabled(true),endAnim()同理。 --------------- 設置兩個flag,第一個是記錄菜單打開關(guān)閉的flag1,第二個是記錄菜單是否處于動畫中的flag2; 第二個記錄處于動畫中的flag2在進入for循環(huán)前改變狀態(tài)成true; 第一個flag1 狀態(tài)改變放在最后一個objectanimator的監(jiān)聽事件onAnimationEnd里,第二個flag2狀態(tài)也在這里重新切換成false(因為到這里動畫已經(jīng)結(jié)束了) 放出菜單的判斷是if(flag1&&!flag2) 放出收回菜單的判斷是else if(!flag&&!flag2) 這樣在動畫中就不會再次觸發(fā)動畫了。
    查看全部
  • 如圖是實現(xiàn)菜單彈出和回收的代碼 其余代碼: 全局變量: private int[] res={R.id.imageView_a,R.id.imageView_b,R.id.imageView_c,R.id.imageView_d, R.id.imageView_e,R.id.imageView_f,R.id.imageView_g,R.id.imageView_h,}; private List<ImageView> imageViewList = new ArrayList<ImageView>(); private boolean flag = true; 在 onCreate() 中進行ImageView初始化和點擊事件的綁定: for (int i=0;i<res.length;i++){ ImageView imageView = (ImageView)findViewById(res[i]); imageView.setOnClickListener(this); imageViewList.add(imageView); } 在點擊事件doClick()中對第一個圖進行判斷: switch (v.getId()){ case R.id.imageView_a: if(flag){ stratAnim(); }else { closeAnim(); } break; default: Toast.makeText(this, "點擊了"+v.getId(), Toast.LENGTH_SHORT).show(); break } 這里列舉了幾種插值器(以下都只是前綴,例如Accelerate表示AccelerateInterpolator): Accelerate 加速變化 Decelerate 減速變化 AccelerateDecelerate 先加速再減速 Overshoot 在結(jié)束之前會超出預定位置一點點,然后回到預定位置 Bounce 最常見的回彈動畫,例如自由落體的小球的回彈效果就是通過這樣一個插值器實現(xiàn)的。
    查看全部
  • Animator 的 set 方法為我們提供了非常豐富的動畫控制效果。例如:playTogether()同時播放,playSequentially()按順序播放。 set還可以做更詳細的順序控制,如圖 set.play(animator2).with(animator3); // 動畫animator2和animator3同時進行 set.play(animator1).after(animator2); // 動畫animator1在animator2(也可以寫3)之后進行 這種方式也是屬性動畫框架中使用最多的一種:通過 ObjectAnimator 進行更精確的屬性動畫設置,只控制一個對象的一個屬性,同時多個 ObjectAnimator 組合到 AnimatorSet 中,形成一個完整的動畫效果。而且 AnimatorSet 可以通過調(diào)用 play()、with()、after()、before()、playTogether()、playSequentially()等方法,實現(xiàn)更為豐富的動畫效果。
    查看全部
  • 在圖中已經(jīng)被注釋掉的部分是使用 ObjectAnimator 的ofFloat()方法為 ImageView對象添加動畫效果。 但這里更推薦使用圖中的 PropertyValuesHolder 方式。因為谷歌在PropertyValuesHolder 中做了一些優(yōu)化。 PropertyValuesHolder 的優(yōu)點:更加有效率,更加節(jié)省系統(tǒng)資源。 ------------- 摘自評論區(qū): ofFloat的常見參數(shù):String[] values = {"translationX","translationY","scaleX","scaleY","rotation","alpha"}; translationX: 偏移位置(單位:像素) scalexX: 縮放程度(0.5F代表縮放50%) rotation: 旋轉(zhuǎn)角度(單位:角度) alpha: 透明度(0.5F代碼50%不透明)
    查看全部
  • 屬性動畫 Animator 與傳統(tǒng)動畫 Animation Animation:系統(tǒng)一直不斷地調(diào)用 onDraw()方法去重繪界面,來實現(xiàn)動畫的效果。 Animator:屬性動畫,顧名思義,就是通過屬性的 get/set 方法去真實地改變這個屬性。 既然已經(jīng)有了 Animation 動畫框架,谷歌為什么還要創(chuàng)建 Animator 屬性動畫框架呢? 局限性:交互性較差,比較耗費CPU資源等。舉個例子: 給一個ImageView設置點擊事件(比如彈出一個Toast),并給ImageView設置位移動畫(動畫已設置了setFillAfter(true),使圖片在位移之后不會復位),最后設置一個Button用于啟動動畫。啟動動畫之前,我們點擊圖片,會彈出一個Toast,這很正常。但啟動動畫之后,等圖片離開了原來的位置,我們再點擊這個圖片,卻毫無響應,去點擊原來的位置,卻彈出了Toast,這就是Animation的第一個局限:它只是重繪了動畫,并不具有交互性,不能做有交互的動畫效果。 第二個局限:由于Animation動畫框架是通過不斷去調(diào)用 onDraw()去重繪界面,所以會很耗費CPU資源。 其他局限:Animation僅僅具有位移、旋轉(zhuǎn)、縮放、透明度這4種動畫。雖然通過各種各樣的組合,我們已經(jīng)能夠?qū)崿F(xiàn)比較豐富的動畫效果,但是相比一個屬性來說,這還是遠遠不夠的。 -------------- 另外新手推薦學習 Google API Demos,這里匯集了很多Android經(jīng)典的小例子。
    查看全部
  • 插值器總結(jié)
    查看全部
  • 屬性動畫總結(jié)
    查看全部
  • 屬性動畫常用屬性
    查看全部
  • 006
    查看全部
  • ValueAnimator --數(shù)值發(fā)生器,可以實現(xiàn)很多很靈活的動畫效果; ObjectAnimator --繼承于ValueAnimator,可以很好滴使用屬性對話框架; AnimatorUpdateListener -- 用于動畫監(jiān)聽器 AnimatorListenerAdapter-- 用于動畫監(jiān)聽器 PropertyValuesHolder --用于控制動畫集合的顯示效果 Animatorset --用于控制動畫集合的顯示效果 TypeEvaluators ---值計算器,用于控制值變化的規(guī)律 Interprolators ---插值計算器,用于控制值變化的規(guī)律
    查看全部
  • 005
    查看全部
  • 004
    查看全部

舉報

0/150
提交
取消
老師告訴你能學到什么?
通過本課程,你將學到: 1、3.0之后新增的屬性動畫介紹 2、舊動畫框架的局限性 3、實際演示屬性動畫的基本用法 4、介紹關(guān)于動畫的高級技巧:插值器、估值器等 5、各種動畫的使用場景

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網(wǎng)的支持!