2 liguu liguu 于 2014.03.18 11:57 提问

ViewFlipper做图片滑动程序闪退

在网上找了一个代码 测试的时候只是五张图片没问题 当我多加几张的时候问题出来了 部署到手机上的时候程序一打开就自动关闭了

代码:

src\com.example.demo
MainActivity.java

package com.example.demo;

import com.example.demo.R.drawable;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;

public class MainActivity extends Activity implements OnGestureListener {

private int[] imgs = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,
        R.drawable.img5, R.drawable.img6 , R.drawable.img7, 
         };  //这里再加一张图片的话程序就会闪退了 我在模拟器上真机上都试了 求大神帮忙解答  小弟感激不尽
private GestureDetector gestureDetector;  
private ViewFlipper viewFlipper;  
private Activity mActivity;  

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    mActivity = this;  
    viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);  

    gestureDetector = new GestureDetector(this);  

    for (int i = 0; i < imgs.length; i++) { // 添加图片源  
        ImageView iv = new ImageView(this);  
        iv.setImageResource(imgs[i]);  
        iv.setScaleType(ImageView.ScaleType.FIT_XY);  
        viewFlipper.addView(iv, new LayoutParams(LayoutParams.FILL_PARENT,  
                LayoutParams.FILL_PARENT));  
    }  

    viewFlipper.setAutoStart(false); // 设置自动播放功能(点击事件,前自动播放)  
    viewFlipper.setFlipInterval(3000);  
    if (viewFlipper.isAutoStart() && !viewFlipper.isFlipping()) {  
        viewFlipper.startFlipping();  
    }  
}  

@Override  
public boolean onTouchEvent(MotionEvent event) {  
    // TODO Auto-generated method stub  
    viewFlipper.stopFlipping(); // 点击事件后,停止自动播放  
    viewFlipper.setAutoStart(true);//设置是否自动播放  
    return gestureDetector.onTouchEvent(event); // 注册手势事件  
}  

@Override  
public boolean onDown(MotionEvent arg0) {  
    // TODO Auto-generated method stub  
    return false;  
}  

@Override  
public boolean onFling(MotionEvent e1, MotionEvent e2, float arg2,  
        float arg3) {  
    if (e2.getX() - e1.getX() > 120) { // 从左向右滑动(左进右出)  
        Animation rInAnim = AnimationUtils.loadAnimation(mActivity,  
                R.anim.push_right_in); // 向右滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)  
        Animation rOutAnim = AnimationUtils.loadAnimation(mActivity,  
                R.anim.push_right_out); // 向右滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1)  

        viewFlipper.setInAnimation(rInAnim);  
        viewFlipper.setOutAnimation(rOutAnim);  
        viewFlipper.showPrevious();  
        return true;  
    } else if (e2.getX() - e1.getX() < -120) { // 从右向左滑动(右进左出)  
        Animation lInAnim = AnimationUtils.loadAnimation(mActivity,  
                R.anim.push_left_in); // 向左滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)  
        Animation lOutAnim = AnimationUtils.loadAnimation(mActivity,  
                R.anim.push_left_out); // 向左滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1)  

        viewFlipper.setInAnimation(lInAnim);  
        viewFlipper.setOutAnimation(lOutAnim);  
        viewFlipper.showNext();  
        return true;  
    }  
    return true;  
}  

@Override  
public void onLongPress(MotionEvent arg0) {  
    // TODO Auto-generated method stub  

}  

@Override  
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,  
        float arg3) {  
    // TODO Auto-generated method stub  
    return false;  
}  

@Override  
public void onShowPress(MotionEvent arg0) {  
    // TODO Auto-generated method stub  

}  

@Override  
public boolean onSingleTapUp(MotionEvent arg0) {  
    // TODO Auto-generated method stub  
    return false;  
}  

}

1个回答

qq_32402705
qq_32402705   2015.10.29 13:06

楼主解决了吗?同问啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用ViewFlipper实现图片自动切换,并支持手势滑动切换
首先来看看项目结构目录: 不好意思,我右开始使用AndroidStudio了 ,开始用不习惯,就特意去搭建了eclipse的开发环境,整了好久,后来发现eclipse还是不如AndroidStudio啊,虽然快捷键那些东西啊用不太习惯,但是相信慢慢都会好的。 首先我们直接看代码吧: 先是activity_main.xml <LinearLayout xmlns
android viewflipper 左右滑动切换显示图片效果
1.首先定义四个动画文件,表示当view切换的时候的显示效果 in_leftright.xml <translate android:duration="500" android:fromXDelta="0" android:toXDelta="-100%p" /> in_rightleft.xml
Android-解决ViewFlipper与ScrollView滑动响应事件拦截的问题
最近在做一个简单的展示界面时,遇到了一个比较棘手的问题。由于要展示多项内容,所以使用ViewFlipper作为水平滑动容器;而每项内容中由于许多文本较长,因此需要使用ScrollView作为垂直滑动容器。基本的界面布局大致如下: 外部文件common_list_view.xml: <RelativeLayout xmlns:android="http://schemas.android.
ViewFlipper界面自动切换和滑动切换
ViewFlipper public class ViewFlipperextends ViewAnimator Simple ViewAnimator that will animate between two or more views that have been added to it. Only one child is shown at a time. If reque
安卓之ViewFlipper实现渐变视差导航页
前言以前的导航页总是使用viewPager配套fragment来实现的,某天一个妹子说其实导航页也可以使用ViewFilpper 来实现,哈哈确实不错,前段时间就用ViewFilpper 实现了京东快报,然后呢那时候对ViewFilpper 也随便了解了下,不过那个直接是xml实现的,这里不表了,接着看今天实现的渐变视差导航页。ViewFilpperViewFilpper 是Android官方提供的
利用ViewFlipper实现实际应用中banner的自动滑动和手动滑动结合。
ViewFilpper 是Android官方提供的一个 View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。 又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View。 下面就直接上代码 public class ViewFlipperActivity ext
ViewFlipper基本是实现及上下左右滑动
最近遇到了一些奇葩需求需要轮播上下左右滑动,原来的viewpage就不好用了,所有我就用了viewfipper控件 一步一步来,先熟悉下这个控件 一、基本实现 先写个最简单的例子 xml version="1.0" encoding="utf-8"?> xmlns:android="http://schemas.android.com/apk/res/android"
自定义ViewFlipper实现带索引效果的自动播放广告栏
前几天看到淘宝和易迅的客户端的广告栏做的不错,今天就尝试了一下,模仿着写了带指引的ViewFlipper。本文主要介绍指引栏的实现,论坛上关于ViewFlipper的使用和介绍很多,就不过多介绍。 效果图如下: 首先是布局,稍有Android开发经验的人很容易看出来,这是一个Layout里面嵌套了ViewFliper和一个LinearLayout。布局如下: <Relative
ViewFlipper
ViewFlipper滑屏切换效果 ,图片滑动 播放
Android ViewFlipper既可以滑动又可以点击
public class HeadActivity extends Activity implements android.view.GestureDetector.OnGestureListener{ private int[] imageID = {R.drawable.a, R.drawable.b, R.drawable.c}; //将要滚动的图片存到数组 private View