Android中利用viewflipper动画切换屏幕效果

整个项目的

package com.example.viewflipper;
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.Window;
import android.widget.ImageView;
import android.widget.ViewFlipper;
public class MainActivity extends Activity{
private ViewFlipper flipper;
private float startX;
private int resId[] = { R.drawable.ic_girl2, R.drawable.ic_girl3,
R.drawable.ic_girl4, R.drawable.ic_girl5, };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
flipper = (ViewFlipper) findViewById(R.id.viewflipper);
// 动态导入的方式为ViewFlipper加入子VIEW
for (int i = 0; i < resId.length; i++) {
flipper.addView(getImageView(resId[i]));
}
// overridePendingTransition(R.anim.left_in, R.anim.left_out);
// flipper.setFlipInterval(3000); flipper.startFlipping();
// 这样的会实现类似幻灯片的效果
// 为viewFlipper去添加动画效果
// flipper.setInAnimation(this, R.anim.left_in);
// flipper.setOutAnimation(this, R.anim.left_out);
// 设定ViewFlipper的时间间隔
// flipper.setFlipInterval(3000);
// 开始播放
// flipper.startFlipping();
}
private ImageView getImageView(int resId) {
ImageView imageView = new ImageView(this);
// imageView.setImageResource(resId);宽高完全取决于图片大小
imageView.setBackgroundResource(resId);// 这样就可以自适应
return imageView;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
// 手指落下
case MotionEvent.ACTION_DOWN:
// 刚开始手指落下的坐标,获得横向坐标的x
{
startX = event.getX();
break;
}// 手指移动
case MotionEvent.ACTION_MOVE:
{
Log.i("Main", "调动次数");
break;
}// 手指离开
case MotionEvent.ACTION_UP: {
if (event.getX() - startX > 100) { // 向右滑动
flipper.setInAnimation(this, R.anim.left_in);
flipper.setOutAnimation(this, R.anim.left_out);
flipper.showPrevious();// 显示前一页;
}
if (startX - event.getX() > 100) {// 向左滑动
flipper.setInAnimation(this, R.anim.right_in);
flipper.setOutAnimation(this, R.anim.right_out);
flipper.showNext();// 显示后一页;
}
break;
}
}
return super.onTouchEvent(event);
}
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="2000"
android:fromXDelta="-100%p"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="2000"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="2000"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="2000"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
<?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="vertical" >
<ViewFlipper
android:id="@+id/viewflipper"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ViewFlipper>
</LinearLayout>

感悟:ViewFlipper貌似可以做成新下载的应用 ,用户第一次进入的大概描述。。最后再做个button,进入应用。

1.先在main.xml文件中添加viewflipper,然后在MainActivity中实例化,setContext布局要改掉,通过动态导入数据源的方法。

通过一个resId.length的for循环导入。 新建一个ImageView 对象的ImageView getImageView(int resId)函数

里面

// imageView.setImageResource(resId);宽高完全取决于图片大小
imageView.setBackgroundResource(resId);// 这样就可以自适应

要用第二个好点。 然后返回一个对象。

在res/anim下分别建立4个xml 文件, left_in,left_out,right_in,right_out;

例:left_in 即如偏从左边进来

<translate
android:duration="2000" //持续时间为2s
android:fromXDelta="-100%p"//
android:toXDelta="0" />

这里有2种实现方式

(1)overridePendingTransition(R.anim.left_in, R.anim.left_out);

//设定时间间隔
flipper.setFlipInterval(3000);
flipper.startFlipping();
//这样的会实现类似幻灯片的效果

(2)flipper.setInAnimation(this, R.anim.left_in);

flipper.setOutAnimation(this, R.anim.left_out);
// 设定ViewFlipper的时间间隔
flipper.setFlipInterval(3000);
// 开始播放
// flipper.startFlipping();

然后加载一个boolean onTouchEvent(MotionEvent event)

设置一个全局变量private Float startX;//手指落下时的位置

通过event.getAction()获取

case MotionEvent.ACTION_DOWN://手指落下时的
{startX = event.getX(); }-->获得刚开始的横坐标
case MotionEvent.ACTION_UP://手指离开
{通过判断event.getX()-startX>100判断向右滑动,然后实现动画,并显示前一面
startX-event.getX()<100判断向左滑动,然后实现动画,并显示后一面
}
//手势操作要在up中,若在down中会发生图层折叠的问题。 通过Log.i("Main","次数");

可以看出手指稍微一动就会出现很多。

case MotionEvent.ACTION_MOVE://手指滑动时

以上所述是小编给大家介绍的Android中利用viewflipper动画切换屏幕效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Android中使用ViewFlipper进行手势切换实例

    本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考.具体实现步骤如下: 首先在layout的xml文件中定义一个ViewFlipper: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?>  <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 

  • Android ViewFlipper简单用法解析

    ViewFlipper和ViewPager挺像的,都是一个view容器.内部可以添加多个view,只是viewpager可以通过左右滑动来切换view,而viewFlipper则没有这个功能,所以需要在它上面监听手势.比较方便的是它不用使用适配器就能添加view,所以比较方便. 首先在布局文件中定义这个控件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&qu

  • Android ViewFlipper翻转视图使用详解

    简介 ViewFlipper是Android自带的一个多页面管理控件且可以自动播放!它和ViewPager有所不同,ViewPager继承自ViewGroup,是一页一页的,可以带动画效果,可以兼容低版本:而ViewFlipper继承ViewAnimator,是一层一层的,切换View的时候可以设置动画效果,是Android 4.0才引入的新控件.使用场景和ViewPager基本一样,在很多时候都是用来实现进入应用后的引导页或者用于图片轮播显示. 常用方法 setInAnimation:View

  • Android仿淘宝头条向上滚动广告条ViewFlipper

    所谓前人栽树,后人乘凉,在此感谢博主的贡献. 参考博文: 仿淘宝首页的淘宝头条View垂直滚动 欢迎关注我的微信公众号 不只是原创技术文章,更多的是对生活的思考总结 我在博主的基础上做了如下工作: 修复了滚动条第二条点击事件无法触发这个bug: 充分简化了自定义ViewFlipper类的代码: 添加了直接使用ViewFlipper控件实现同样效果: 先上效果图: 这里使用了一个比较少用的控件:ViewFlipper 学习一个未知的东西,第一步就是要搞懂what:学的这个东西是什么以及能够实现什么

  • 解析Android中实现滑动翻页之ViewFlipper的使用详解

    1)View切换的控件-ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类.而ViewAnimator类继承于FrameLayout. 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果.该类有如下几个和动画相关的方法. setInAnimation:设置View进入屏幕时候使用的动画.该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID. setOut

  • Android ViewFlipper用法实例分析

    本文实例讲述了Android ViewFlipper用法.分享给大家供大家参考,具体如下: 这里实现的效果是当手动滑动手机屏幕时会一个一个地显示图片,一次显示一张图片 package com.my.viewflippertest; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.GestureDetector.OnGest

  • Android中ViewFlipper的使用及设置动画效果实例详解

    本文实例讲述了Android中ViewFlipper的使用及设置动画效果.分享给大家供大家参考,具体如下: 说到左右滑动,其实实现左右滑动的方式很多,有ViewPaer,自定义实现Viewgroup,gallery等都可以达到这种效果.这里做下ViewFliper实现左右滑动的效果. 会用到以下的技术: 1.ViewFlipper 2.GestureDetector 3.Animation 主要是这三个类在起作用. ViewFlipper,不妨把它看做一个容器吧,你可以把许多的View放在这个容

  • Android使用ViewFlipper实现图片切换功能

    今天给大家简单的讲一下Android手势,目前市场上的App中手势的运用比较少. Android提供了两种手势: ①.Android提供了手势检测,并为手势检测提供了相应的监听器 ②.Android允许开发者添加手势,并提供了相应的API识别用户手势 在之前的一片博客我讲过如何使用ViewPager实现图片滑动切换 地址:Android使用ViewPager实现图片滑动预览效果 但是ViewPager拥有自带的手势识别,意思就是它会自动识别手势是右滑还是左滑. 今天我讲一下如何使用ViewFli

  • Android TextSwitcher文本切换器和ViewFlipper使用详解

    本文为大家分享了Android TextSwitcher文本切换器的使用,供大家参考,具体内容如下 1.TextSwitcher 使用: 应用分为三步: 1.得到 TextSwitcher 实例对象   TextSwitcher switcher = (TextSwitcher) findViewById(R.id.textSwitcher); 2.为switcher指定ViewSwitcher.ViewFactory工厂,该工厂会产生出转换时需要的View   switcher.setFact

  • ANDROID中使用VIEWFLIPPER类实现屏幕切换(关于坐标轴的问题已补充更改)

    屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.如下动图: 该类有如下几个和动画相关的函数: setInAnimation:设置View进入屏幕时候使用的动画,该函数有两个版本,一个接受单个参数,类型为android.view.animation.Animation:一个接受两个参数,类型为Context和int,分别为Context对象和定义An

随机推荐