Android Animations(四):放缩(Zooming)
- 放縮Zooming
- 原文鏈接
- 創建視圖
- 設置縮放動畫
- 實現放縮效果
放縮(Zooming)
原文鏈接
本篇博文介紹如何實現點擊-放縮動畫效果。當需要在縮略圖和原圖之間進行切換時(例如Gallery),縮放動畫非常實用。
下面是縮放動畫效果:
- 創建新項目,并且在相應目錄創建下面三個文件
- src/TouchHighlightImageButton.java
- src/ZoomActivity.java
- layout/activity_zoom.xml
創建視圖
創建一個布局文件,其中包含所需放縮的小版本和大版本的內容。下面的例子中,創建了一個ImageButton(展示照片的縮略圖)以及一個ImageView(展示原圖):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/container"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:padding="16dp"><ImageButton android:id="@+id/thumb_button_1"android:layout_width="100dp"android:layout_height="75dp"android:layout_marginRight="1dp"android:src="@drawable/thumb1"android:scaleType="centerCrop"android:contentDescription="@string/description_image_1" /></LinearLayout><!-- This initially-hidden ImageView will hold the expanded/zoomed version ofthe images above. Without transformations applied, it takes up the entirescreen. To achieve the "zoom" animation, this view's bounds are animatedfrom the bounds of the thumbnail button above, to its final laid-outbounds.--><ImageView android:id="@+id/expanded_image"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="invisible"android:contentDescription="@string/description_zoom_touch_close" /></FrameLayout>設置縮放動畫
寫好布局文件后,設置事件監聽器,在需要的時候放縮視圖。在我們的例子中,通過監聽ImageButton 的View.OnClickListener事件,執行放縮動畫。
public class ZoomActivity extends FragmentActivity {// Hold a reference to the current animator,// so that it can be canceled mid-way.private Animator mCurrentAnimator;// The system "short" animation time duration, in milliseconds. This// duration is ideal for subtle animations or animations that occur// very frequently.private int mShortAnimationDuration;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_zoom);// Hook up clicks on the thumbnail views.final View thumb1View = findViewById(R.id.thumb_button_1);thumb1View.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {zoomImageFromThumb(thumb1View, R.drawable.image1);}});// Retrieve and cache the system's default "short" animation time.mShortAnimationDuration = getResources().getInteger(android.R.integer.config_shortAnimTime);}... }實現放縮效果
通常情況下,需要將正常大小的視圖放大到大尺寸。下面的方法展示了如何實現縮放動畫:
1. 分配高質量的圖片資源給隱藏的需要放大的ImageView 。下面的例子簡單地在UI線程加載一張大圖,實際項目中應該另起一個線程,同時在UI線程使用Bitmap,防止阻塞UI線程。理想情況下,Bitmap的大小應該小于屏幕的大小。
2. 計算ImageView的起始和結束邊界。
3. 從開始到結束,X,Y,SCALE_X,SCALE_Y 四個值同時進行變化。四個動畫同時添加到AnimatorSet 中,他們將會同時開始。
4. 縮小與放大相似,點擊屏幕時,圖片縮小。添加View.OnClickListener 監聽器,監聽ImageView的點擊事件。當點擊ImageView時,最小化使之變回為縮略圖,并且設置其visibility 為GONE。
總結
以上是生活随笔為你收集整理的Android Animations(四):放缩(Zooming)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈麦克风指向性原理、设计及应用
- 下一篇: Kinect2.0UnitySDK在un