Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 视图翻转器不翻转_Android_View_Viewflipper - Fatal编程技术网

Android 视图翻转器不翻转

Android 视图翻转器不翻转,android,view,viewflipper,Android,View,Viewflipper,我已经阅读了关于这一主题的所有三个问题,其中一个提到了完全相同的问题和相同的步骤,但没有解决方案(见下文) 在这个SO链接中,我和James有完全相同的问题 我尝试过几乎相同的一套技巧。我确信我的视图正在翻转,但除了第一个视图,我看不到新的图片 在阅读了以下链接的讨论之后,我相信詹姆斯和我可能犯了同样的错误,但讨论没有提到决议 我还通读了其他关于这个问题的答案,但没有一个给出正确的解决方案 有人能帮我吗?这是我正在使用的代码。我正在尝试创建一个图像列表,每个图像都由一个视图翻转器控制。如果要翻

我已经阅读了关于这一主题的所有三个问题,其中一个提到了完全相同的问题和相同的步骤,但没有解决方案(见下文)

在这个SO链接中,我和James有完全相同的问题

我尝试过几乎相同的一套技巧。我确信我的视图正在翻转,但除了第一个视图,我看不到新的图片

在阅读了以下链接的讨论之后,我相信詹姆斯和我可能犯了同样的错误,但讨论没有提到决议

我还通读了其他关于这个问题的答案,但没有一个给出正确的解决方案

有人能帮我吗?这是我正在使用的代码。我正在尝试创建一个图像列表,每个图像都由一个视图翻转器控制。如果要翻转图像,它将转换为带有图像名称的文本视图

    public class CustomListViewAdapter extends ArrayAdapter<ScreenObject> {
    private static final int SWIPE_MIN_DISTANCE = 70;
    private static final int SWIPE_MAX_DISTANCE = 50;
    private static final int SWIPE_THRESHOLD_VELOCITY = 120;

    public CustomListViewAdapter(Context new_context, int resource_id,
      List<ScreenObject> items, BitmapManager new_bitmap_manager) {
      super(new_context, resource_id, items);
      bitmap_manager = new_bitmap_manager;
    }

    class SwipeGestureDetector extends SimpleOnGestureListener {
      private ScreenObjectViewFlipper view_flipper;

      SwipeGestureDetector(ScreenObjectViewFlipper flip_view) {
        view_flipper = flip_view;
      }

      @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
              float velocityY) {
        Context context = MainActivity.application_context;
        try {
          if (Math.abs(e1.getX() - e2.getX()) > SWIPE_MAX_DISTANCE)
            return false;
          // Top to bottom swipe 
          if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE
                  && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
            Log.i("screenshotsaver", "flig up");
            view_flipper.setInAnimation(AnimationUtils.loadAnimation(context,
                    R.anim.in_from_bottom));
            view_flipper.setOutAnimation(AnimationUtils.loadAnimation(context,
                    R.anim.out_to_top));
            // controlling animation
            view_flipper.showNext();
            return true;
          } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE
                  && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
            Log.i("screenshotsaver", "flig down");
            view_flipper.setInAnimation(AnimationUtils.loadAnimation(context,
                    R.anim.in_from_top));
            view_flipper.setOutAnimation(AnimationUtils.loadAnimation(context,
                    R.anim.out_to_bottom));
            view_flipper.showPrevious();
            return true;
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
        return false;
      }
    }

    class ViewHolder {
      public ScreenObjectViewFlipper flip_view;
      public TextView txt_view;
      GestureDetector detector;
    }

    @Override
    public View getView(int position, View convert_view, ViewGroup parent) {
      ScreenObject screen_object = getItem(position);
      LayoutInflater inflater = (LayoutInflater) MainActivity.application_context
              .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
      ViewHolder holder = null;
      if (convert_view == null) {
        convert_view = inflater.inflate(R.layout.flip_view, null);
        holder = new ViewHolder();
        holder.flip_view = (ScreenObjectViewFlipper) convert_view
                .findViewById(R.id.view_flipper);
        holder.txt_view = (TextView) convert_view.findViewById(R.id.title);
        final GestureDetector detector = new GestureDetector(
                MainActivity.application_context,
                new SwipeGestureDetector(holder.flip_view));
        holder.flip_view.setOnTouchListener(new OnTouchListener() {
          @Override
          public boolean onTouch(final View view, final MotionEvent event) {
            detector.onTouchEvent(event);
            return true;
          }
        });
        holder.detector = detector;
        convert_view.setTag(holder);
      } else
        holder = (ViewHolder) convert_view.getTag();

      holder.txt_view.setText(screen_object.footer_text);
      holder.txt_view.setTag(screen_object.footer_url);
      return convert_view;
    }
  }
公共类CustomListViewAdapter扩展了ArrayAdapter{
专用静态最终整数滑动最小距离=70;
专用静态最终整数滑动最大距离=50;
专用静态最终整数滑动\u阈值\u速度=120;
公共CustomListViewAdapter(上下文新建上下文,int资源id,
列表项,位图管理器(新建位图管理器){
超级(新上下文、资源id、项目);
位图\u管理器=新的\u位图\u管理器;
}
类SwipeGestureDetector扩展了SimpleOnGestureListener{
私有ScreenObjectViewFlipper视图\u flipper;
SwipeGestureDetector(ScreenObjectViewFlipper翻转视图){
视图\翻转器=翻转\视图;
}
@凌驾
公共布尔onFling(运动事件e1、运动事件e2、浮点速度X、,
浮动速度y){
Context Context=MainActivity.application\u Context;
试一试{
if(Math.abs(e1.getX()-e2.getX())>滑动最大距离)
返回false;
//上下滑动
如果(e1.getY()-e2.getY()>滑动最小距离
&&Math.abs(velocityY)>滑动阈值(速度){
Log.i(“屏幕截图保护程序”、“飞起来”);
view_flipper.setInAnimation(动画Utils.loadAnimation(上下文、,
R.anim.in_从_底部);
view_flipper.setOutAnimation(AnimationUtils.loadAnimation(上下文、,
R.anim.out_to_top);
//控制动画
view_flipper.showNext();
返回true;
}否则如果(e2.getY()-e1.getY()>滑动最小距离
&&Math.abs(velocityY)>滑动阈值(速度){
Log.i(“屏幕截图保护程序”、“向下飞行”);
view_flipper.setInAnimation(动画Utils.loadAnimation(上下文、,
R.anim.in_from_top);
view_flipper.setOutAnimation(AnimationUtils.loadAnimation(上下文、,
R.anim.out_to_bottom);
view_flipper.showPrevious();
返回true;
}
}捕获(例外e){
e、 printStackTrace();
}
返回false;
}
}
类视图持有者{
公共ScreenObjectViewFlipper翻转视图;
公共文本视图txt_视图;
手势检测器;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ScreenObject screen\u object=getItem(位置);
LayoutFlater充气器=(LayoutFlater)MainActivity.application\u上下文
.getSystemService(活动.布局\充气机\服务);
ViewHolder=null;
if(convert_view==null){
convert_view=充气机。充气(R.layout.flip_view,null);
holder=新的ViewHolder();
holder.flip_view=(ScreenObjectViewFlipper)转换_视图
.findViewById(R.id.view\U flipper);
holder.txt_view=(TextView)convert_view.findViewById(R.id.title);
最终手势检测器=新手势检测器(
MainActivity.application\u上下文,
新的SwipeGestureDetector(支架翻转视图);
holder.flip_view.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(最终视图、最终运动事件){
探测器。开孔(事件);
返回true;
}
});
holder.detector=检测器;
转换视图设置标签(支架);
}否则
holder=(ViewHolder)convert_view.getTag();
holder.txt\u view.setText(屏幕对象、页脚文本);
holder.txt\u view.setTag(屏幕对象、页脚url);
返回转换视图;
}
}

您是否有相同的XML布局和代码实现?是的。代码完全相同。此处使用的XML布局有语法错误。首先检查一下。嗨,乔尔,很抱歉回复晚了。我在旅行。我已经编辑了问题,以包含我正在使用的代码。你发现这里有什么不对劲吗?