App启动页面的动态效果,参考KenBurnsView静态图片通过放大缩小来实现动效。
Android中使用
1、app->build.gradle引入组件
dependencies {
compile 'com.flaviofaria:kenburnsview:1.0.7'
}
2、布局XML文件中使用
<com.flaviofaria.kenburnsview.KenBurnsView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/your_drawable" />
3、代码中可对其监听
KenBurnsView kbv = (KenBurnsView) findViewById(R.id.image);
kbv.setTransitionListener(new TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
//TODO 动效开始
}
@Override
public void onTransitionEnd(Transition transition) {
//TODO 动效结束
}
});
4、可对其暂停/恢复动效
//暂停动效
kbv.pause();
//恢复动效
kbv.resume();
5、设置动画的插值和过度时间
RandomTransitionGenerator generator = new RandomTransitionGenerator(duration, interpolator);
kbv.setTransitionGenerator(generator);
扩展
这里使用了RN调用原生的私有组件实现(使用position: 'absolute'实现层叠布局)具体实现参考RN中文官方
import React, {Component} from 'react';
import {View, Text,} from 'react-native';
import KenBurnsView from './KenBurnsView'
export default class RN extends Component {
render() {
return (
<View style={{flex: 1}}>
<View style={{zIndex: 1, position: 'absolute'}}>
<KenBurnsView style={{width: 300, height: 600}}/>
</View>
<View style={{
zIndex: 1,
margin: 15,
position: 'absolute',
right: 0,
}}>
<Text style={{
color: '#fff',
borderWidth: 1,
fontSize: 16,
borderColor: '#fff',
borderRadius: 8,
paddingHorizontal: 10,
}}>跳过</Text>
</View>
</View>
);
}
}