## Share Element
由一张图片过度到一个界面,适用于购物车图片直接跳转到商品详情界面,圆形按钮的过度也可以应用于圆形菜单里
<p align="center">
<img src="image/share.gif"/>
</p>
### 实现原理
利用android 5.0 提供的方法,实现共享元素动画的过度,实现原理很简单,在界面跳转的时候加入以下代码
1. **java代码**
```
//第一个界面跳转的时候执行
Intent shareIntent = new Intent(MainActivity.this, ShareElementActivity.class);
String transitionName = getString(R.string.share_tag);
ActivityOptionsCompat transitionActivityOptions
= ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, holder.item_image, transitionName);
startActivity(shareIntent, transitionActivityOptions.toBundle());
```
**makeSceneTransitionAnimation(Activity activity,View sharedElement, String sharedElementName)**
makeSceneTransitionAnimation中参数sharedElement就是传入第一个界面要与第二个界面共有的view元素,sharedElementName这个参数可以随便起名,他相当于tag,系统就是根据这个tag来定位两个界面元素的位置,然后进行动画渲染的
```
//第二个界面动画完成回调监听,控制进出动画效果
setEnterSharedElementCallback(ImageTransitionUtil.DEFAULT_SHARED_ELEMENT_CALLBACK);
```
在 **setEnterSharedElementCallback** 里面可以实现自己想要的动画效果
2. **布局文件代码**<br>
这里用系统自带的ImageView就可以,记住,两个界面跳转activity中的共享元素ImageView,一定要设置这个属性 **transitionName** 上文说过,这个就是相当于tag,系统是根据这个来定位的,所以一定要设置。
```
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="300dp"
android:src="@drawable/sample"
android:transitionName="@string/share_tag"
/>
```
<br>
## CollapsingToolbarLayout
折叠式的标题栏,这个是系统提供的动画效果,引用系统控件就好了
<p align="center">
<img src="image/fold.gif"/>
</p>
### 代码实现
1. **gradle里的引用**
```
compile 'com.android.support:design:22.2.1'
```
2. **java代码**<br>
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_collapsing_toolbar);
ButterKnife.bind(this);
content.setText(R.string.content);
initToolbar();
}
private void initToolbar() {
collapsingToolbar.setTitle("折叠式标题栏");
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
//toolbar返回事件实现
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
3. **布局文件代码**
```
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="300dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:title="Share Element">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/sample"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.5"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="test"
android:textColor="@color/black"
android:textSize="20sp"
android:padding="10dp"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
```
### 布局文件的一些属性说明
1. **layout_scrollFlags**
- scroll - 想滚动就必须设置这个。
- enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。
- exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面。
- enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度
2. **layout_collapseMode**
- pin - 设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar还可以保留在屏幕上。
- parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier(设置视差因子)搭配使用。
- layout_collapseParallaxMultiplier(视差因子) - 设置视差滚动因子,值为:0~1
3. 使用CollapsingToolbarLayout时必须把title设置到CollapsingToolbarLayout上,设置到Toolbar上不会显示
```
collapsingToolbar.setTitle("折叠式标题栏");
```
<br>
## RevealAnimation
google爸爸自从5.0之后对动画效果特别注重,这里给大家介绍一个波纹效果,也是系统提供的
<p align="center">
<img src="image/reveal.gif" />
</p>
#### 实现原理
```
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private Animator animateRevealColorFromCoordinates(ViewGroup viewRoot, @ColorRes int color, int pointx, int pointY) {
float finalRadius = (float) Math.hypot(viewRoot.getWidth(), viewRoot.getHeight());
//由于toolbar是自己绘制的所以要减去这个高度
pointY = pointY - toolbarHeight;
Animator anim = ViewAnimationUtils.createCircularReveal(viewRoot, pointx, pointY, 0, finalRadius);
viewRoot.setBackgroundColor(ContextCompat.getColor(this, color));
anim.setDuration(500);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.start();
return anim;
}
```
##### ViewAnimationUtils.createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius)
重点是这个方法,设置在哪个View里绘制波纹,起始点及半径就可以实现了,很多开源的button波纹效果都是基于这个实现再次封装的
### 文档�
没有合适的资源?快使用搜索试试~ 我知道了~
基于Android 系统的动画总结.zip
共57个文件
xml:20个
java:11个
png:10个
需积分: 5 0 下载量 18 浏览量
2024-03-11
14:16:09
上传
评论
收藏 3.25MB ZIP 举报
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
资源推荐
资源详情
资源评论
收起资源包目录
基于Android 系统的动画总结.zip (57个子文件)
资料总结
gradle.properties 730B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
image
share.gif 1.46MB
reveal.gif 223KB
fold.gif 1.43MB
app
src
androidTest
java
com
jzp
materialanim
ExampleInstrumentedTest.java 744B
test
java
com
jzp
materialanim
ExampleUnitTest.java 398B
main
java
com
jzp
materialanim
RevealAnimationActivity.java 3KB
common
ToolbarActivity.java 1KB
ToolbarHelper.java 3KB
TransitionImageView.java 12KB
ImageTransitionUtil.java 7KB
ImageViewTouchListener.java 4KB
CollapsingToolbarActivity.java 2KB
MainActivity.java 5KB
ShareElementActivity.java 2KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
values
colors.xml 432B
strings.xml 3KB
attrs.xml 403B
styles.xml 553B
layout
activity_reveal_anim.xml 1KB
activity_share_element.xml 1KB
item.xml 848B
item_toolbar.xml 402B
activity_collapsing_toolbar.xml 2KB
activity_main.xml 1KB
drawable
circle.xml 337B
sample.jpg 50KB
AndroidManifest.xml 890B
proguard-rules.pro 934B
build.gradle 1KB
.gitignore 7B
gradlew.bat 2KB
build.gradle 498B
.idea
dictionaries
apple.xml 84B
runConfigurations.xml 564B
misc.xml 4KB
compiler.xml 686B
modules.xml 361B
gradle.xml 626B
encodings.xml 159B
copyright
profiles_settings.xml 74B
settings.gradle 15B
gradlew 5KB
.gitignore 118B
README.md 8KB
共 57 条
- 1
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功