当前位置: 首页 > 编程笔记 >

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

巫经义
2023-03-14
本文向大家介绍Android中利用viewflipper动画切换屏幕效果,包括了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动画切换屏幕效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 在libGDX中切换屏幕似乎有问题。它会切换到游戏屏幕,但不会切换回主屏幕,也不会切换到屏幕上的游戏。我的游戏课: 我的GameScreen类(实现屏幕): 这就是我如何更改屏幕(不工作): 你可以在这里找到全部来源。

  • 本文向大家介绍Android横竖屏幕切换小结,包括了Android横竖屏幕切换小结的使用技巧和注意事项,需要的朋友参考一下 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换进行关闭。 AndroidManifest.xml activity_main.xml MainActivity.java 以上内容给大家

  • 本文向大家介绍Android 屏幕横竖切换详解,包括了Android 屏幕横竖切换详解的使用技巧和注意事项,需要的朋友参考一下 Android 屏幕横竖切换 Android 里面控制Activity的方向,只要在AndroidManifest.xml里面对应的Activity节点下加一句 android:screenOrientation="landscape"(landscape是横屏,port

  • Vue 提供了多种方式支持动画过渡效果。例如在各个过渡阶段应用 CSS 类,提供钩子函数使用 JS 操作 DOM,使用第三方 CSS/JS 动画库等。 如果对 Vue 中内置的 transition 机制还不了解,可以阅读 官方的介绍。 在模板项目中,主要使用了最简单的应用 CSS 类的方式完成动画效果。 具体实现 在模板项目中,页面切换时,会有左右滑动效果。 具体表现为打开新页面时左滑展示,返回

  • 本文向大家介绍Android利用Theme自定义Activity间的切换动画,包括了Android利用Theme自定义Activity间的切换动画的使用技巧和注意事项,需要的朋友参考一下 大多Android系统默认Activity间的动画切换效果为,右边滑入,左边滑出;有时候我们的需求可能是要求所有Activity的切换为淡入淡出的效果,这时候就可能需要改变一下默认的切换风格。 下面开始实现: 首

  • 本文向大家介绍解决Android手机屏幕横竖屏切换,包括了解决Android手机屏幕横竖屏切换的使用技巧和注意事项,需要的朋友参考一下 Android中当屏幕横竖屏切换时,Activity的生命周期是重新加载(说明当前的Activity给销毁了,但又重新执行加载), 怎么使屏幕横竖屏切换时,当前的Activity不销毁呢? 1. 在AndroidManifest.xml中为Activity设置co