android 图片查看动画,Android 共享动画实现点击列表图片跳转查看大图页面
主要內容使用系統提供的 API 實現共享動畫
在實現過程中遇到的問題圖片點擊和關閉之后會出現短暫的黑屏問題實現的動畫效果如下:
共享動畫.gif
具體實現這個效果是在兩個頁面之間的切換動畫,既然是兩個頁面之間的切換,那么我們頁面跳轉代碼,設置跳轉動畫,即可。
頁面跳轉的代碼如下:Intent?intent?=?new?Intent(context,?BigImageActivity.class);
intent.putExtra(AppConfig.IMAGE_URL,imageUrl);//?添加跳轉動畫context.startActivity(intent,
ActivityOptionsCompat.makeSceneTransitionAnimation(
(Activity)?context,
shareImage,
context.getString(R.string.share_pic_str))
.toBundle());
可以看到這里用到了ActivityOptionsCompat.makeSceneTransitionAnimation,這個就是頁面跳轉的轉場動畫。
通過查看源碼可以知道這個轉場動畫只支持 Android 5.0以上, 它的源碼實現如下:public?static?ActivityOptionsCompat?makeSceneTransitionAnimation(Activity?activity,
View?sharedElement,?String?sharedElementName)?{????????if?(Build.VERSION.SDK_INT?>=?21)?{????????????return?createImpl(ActivityOptions.makeSceneTransitionAnimation(
activity,?sharedElement,?sharedElementName));
}????????return?new?ActivityOptionsCompat();
}????//?上面的?makeSceneTransitionAnimation?方法的實現
public?static?ActivityOptions?makeSceneTransitionAnimation(Activity?activity,?View?sharedElement,?String?sharedElementName)?{????????throw?new?RuntimeException("Stub!");
}????//?上面的?makeSceneTransitionAnimation?方法的另一個實現?,可以看出是共享動畫是支持多個視圖的
@SafeVarargs
public?static?ActivityOptions?makeSceneTransitionAnimation(Activity?activity,?Pair...?sharedElements)?{????????throw?new?RuntimeException("Stub!");
}第一個參數:上下文
第二個參數:轉場動畫作用的 View 控件
第三個參數:共享字符串,在xml頁面布局中定義
第二個參數這里是ImageView控件,第三個參數是自己定義的字符串,這里是share_image_view。
那么在布局代碼中的實現如下:<?xml ?version="1.0"?encoding="utf-8"?>
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/iv_grid_welfare"
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="centerCrop"
android:transitionName="@string/share_str"/>
大圖頁面布局如下:<?xml ?version="1.0"?encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".big_image.BigImageActivity">
android:id="@+id/iv_big_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:transitionName="@string/share_str"/>
從下一個頁面返回關閉共享動畫
使用 finishAfterTransition(); 替換 finish() 關閉頁面。
以上就實現了兩個頁面之間跳轉的共享動畫效果。
但是動畫從大圖頁面返回時會出現黑屏或者白屏。這是什么原因呢?
這個原因是由于由于我們Activity設置的主題決定的,在 AndroidManifest.xml中找到我們設置的主題,修改為透明主題即可,Theme代碼如下:
android:name=".big_image.BigImageActivity"
android:theme="@style/BigImageTranslateTheme"?/>
true
true
@android:color/transparent
作者:_龍衣
鏈接:https://www.jianshu.com/p/c564f099cd4e
總結
以上是生活随笔為你收集整理的android 图片查看动画,Android 共享动画实现点击列表图片跳转查看大图页面的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: android中的常用方法,androi
 - 下一篇: wifi android系统耗电,魅族m