Android UI基础之ViewFillper实现屏幕切换
来源:互联网 发布:软件的数据采集 编辑:程序博客网 时间:2024/05/20 00:13
ViewFillper 的简单使用
在Android程序设计中,有时需要实现屏幕切换的动画效果,这时可以使用ImageSwitcher实现, 但是其比较单一, 而ViewFillper 则比较灵活。可以将文本与视图同时显示。屏幕切换指的是在同一个Activity内屏幕间的切换,最常见的情况就是在一个FrameLayout内有多个页面,比如系统设置页面,或一个个性化设置页面
。
ViewFillper类的继承关系:
extends ViewAnimator
java.lang.Object
↳
android.view.View
↳
android.view.ViewGroup
↳
android.widget.FrameLayout
↳
android.widget.ViewAnimator
↳
android.widget.ViewFlipper
该类提供了几个与动画相关的函数
setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation;一个接受两个参数,类型为Context和int,分别为Context对象和定义Animation的resourceID。
setOutAnimation: 设置View退出屏幕时候使用的动画,参数setInAnimation函数一样。
showNext: 调用该函数来显示FrameLayout里面的下一个View。
showPrevious: 调用该函数来显示FrameLayout里面的上一个View。
首先要定义每一个动画的属相
Inightleft.xml (从左到右进入屏幕)
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="1000"
android:fromXDelta="100%p"
android:toXDelta="0"
/>
</set>
outeftright.xml——从左到右出去屏幕
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="3000"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
inrightleft.xml——从右到左进入屏幕
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="3000"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
outrightleft.xml——从右到左出去屏幕
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="3000"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.xiyou.com.viewfillperuse.MainActivity">
<ViewFlipper
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewFlipper"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:scaleType="centerCrop"
android:layout_height="match_parent"
android:src="@drawable/a"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/b"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:scaleType="centerCrop"
android:layout_height="match_parent"
android:src="@drawable/c"
/>
</LinearLayout>
</ViewFlipper>>
</RelativeLayout>
具体实现如下:
public class MainActivity extends AppCompatActivity {
private ViewFlipper viewFlipper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
}
float StertX = 0.0f;
float EndX = 0.0f;
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
StertX = event.getX();
} else if (action == MotionEvent.ACTION_UP) {
if (StertX > EndX) {
viewFlipper.setInAnimation(this, R.anim.inightleft);
viewFlipper.setOutAnimation(this, R.anim.outrightleft);
viewFlipper.showNext();// 展示下一个
} else if (EndX > StertX) {
viewFlipper.setInAnimation(this, R.anim.inleftright);
viewFlipper.setOutAnimation(this, R.anim.outleftrigt);
viewFlipper.showPrevious();//展示 上一张
}
}
return super.onTouchEvent(event);
}
}
运行后通过点击屏幕可以实现切换,当然动画的时间可以在动画属性的文件中进行修改。
效果如下:
- Android UI基础之ViewFillper实现屏幕切换
- android基础--屏幕切换动画
- android UI效果三: 滚动切换屏幕
- Android屏幕切换效果实现
- Android屏幕切换效果实现
- Android ViewFliper实现屏幕切换
- 【Android UI】TabHos之基础实现
- Android UI基础之 ExpanableListView 的实现
- Android UI设计 屏幕底部的菜单栏 动画切换Activity
- Android基础之去掉标题栏实现全屏和旋转屏幕
- Android 屏幕切换效果实现 (转)
- android 实现左右两个屏幕的切换
- Android 屏幕切换效果实现 (转)
- Android中使用ViewFlipper实现屏幕切换
- Android实现滑动屏幕切换图片
- Android Activity应用之 横向屏幕切换
- Android之屏幕切换使用技巧
- UI组件之ViewPager实现页面切换
- 如何将CAD文字标注变为ArcGIS属性
- 百度地图离线API调用教程
- 5.3.7 UserDict对象
- 工作职业发展/角色转变的一点感悟
- 回归基础之C语言程序2(getcwd() 和 chdir())
- Android UI基础之ViewFillper实现屏幕切换
- Maximum-Likelihood Expectation-Maximization (ML-EM)
- 属性动画的概念解析--实现星星控件
- 支付宝demo报空指针
- 每天进步一点点:有无逗号的区别
- XML文件的解析
- 此账户已废弃,请关注新博客
- 弄清size_t以及有符号数与无符号数的比较
- VHDL