91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何通過MeasureSpec做動畫

小樊
84
2024-07-08 12:07:17
欄目: 編程語言

MeasureSpec是Android中用來測量View的尺寸的工具類,一般用于在View的measure()方法中使用。如果想通過MeasureSpec做動畫,可以結合屬性動畫來實現。

首先,可以通過屬性動畫來改變View的尺寸。在屬性動畫中,可以通過改變View的LayoutParams來實現View的尺寸改變。在動畫的過程中,可以動態設置View的MeasureSpec,然后調用View的requestLayout()方法來重新布局View。

具體的做法如下:

  1. 創建一個屬性動畫,改變View的LayoutParams的寬高屬性。
  2. 在動畫的過程中,根據需要改變View的MeasureSpec,然后調用View的requestLayout()方法。
  3. 在View的onMeasure()方法中,根據MeasureSpec來測量View的尺寸。

下面是一個簡單的示例代碼:

ObjectAnimator animator = ObjectAnimator.ofInt(view, "width", 100, 200);
animator.setDuration(1000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        int value = (int) animation.getAnimatedValue();
        ViewGroup.LayoutParams params = view.getLayoutParams();
        params.width = value;
        
        // 根據需要改變MeasureSpec
        int widthMeasureSpec = MeasureSpec.makeMeasureSpec(value, MeasureSpec.EXACTLY);
        int heightMeasureSpec = MeasureSpec.makeMeasureSpec(params.height, MeasureSpec.EXACTLY);
        view.measure(widthMeasureSpec, heightMeasureSpec);
        
        view.requestLayout();
    }
});
animator.start();

這樣就可以通過MeasureSpec和屬性動畫實現View的尺寸改變動畫了。需要注意的是,在動畫更新的時候,一定要重新測量View并請求重新布局,才能實現動畫效果。

0
大姚县| 平罗县| 银川市| 金阳县| 中宁县| 车致| 安多县| 鹿泉市| 阿荣旗| 阿尔山市| 略阳县| 小金县| 金山区| 莫力| 南江县| 衢州市| 水富县| 长海县| 日喀则市| 柳州市| 隆尧县| 长丰县| 红河县| 盘锦市| 文登市| 化州市| 离岛区| 策勒县| 子洲县| 泾阳县| 龙川县| 湖南省| 靖安县| 柘荣县| 富锦市| 邢台县| 泽普县| 从江县| 昆山市| 霍林郭勒市| 扎囊县|