使用场景:
仿淘宝消息滚动,之前有类似的demo,但是都是一大堆代码或者找个库,无意中看到官方竟然有实现他的View,ViewFlipper
。
ViewFlipper
:系统自带的View,源码
package android.widget;
...
....
@RemoteView
public class ViewFlipper extends ViewAnimator {
public class ViewAnimator extends FrameLayout {
目录:

使用:
xml布局中加入ViewFlipper相关属性代码
<ViewFlipper
android:id="@+id/viewflipper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoStart="true"
android:flipInterval="2000"
android:inAnimation="@anim/anim_come_in"
android:outAnimation="@anim/anim_come_out" />
在res/anim文件夹下加入:
anim_come_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="100%p"
android:toYDelta="0" />
<alpha
android:duration="500"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
anim_come_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="-100%p" />
<alpha
android:duration="500"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
初始化数据
private ViewFlipper mViewFlipper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gson_activity);
mViewFlipper = findViewById(R.id.viewflipper);
initData();
}
private void initData() {
for (int i = 0; i < 5; i++) {
View view = LayoutInflater.from(this).inflate(R.layout.customer_viewflipper_item, null);
mViewFlipper.addView(view);
}
}
滚动的某一项:customer_viewflipper_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" />
<TextView
android:layout_width="match_parent"
android:text="hfsjfskdfjsdfhk"
android:layout_height="wrap_content" />
</LinearLayout>
ViewFlipper相关属性:
在xml布局中的方法介绍:
android:autoStart: 设置自动加载下一个View
android:flipInterval:设置View之间切换的时间间隔
android:inAnimation: 设置切换View的进入动画
android:outAnimation:设置切换View的退出动画
当然同样的在代码activity中也可以设置:
isFlipping: 判断View切换是否正在进行
setFilpInterval:设置View之间切换的时间间隔
startFlipping: 开始View的切换,而且会循环进行
stopFlipping: 停止View的切换
setOutAnimation:设置切换View的退出动画
setInAnimation: 设置切换View的进入动画
showNext: 显示ViewFlipper里的下一个View
showPrevious: 显示ViewFlipper里的上一个View
可以根据以上属性加入更多特效,现举例仅消息滚动列表。
网友评论