【问题标题】:Touch Scroll on View Flipper in Android?在 Android 中的 View Flipper 上触摸滚动?
【发布时间】:2010-07-08 10:43:03
【问题描述】:

我必须在 ViewFlipper 上实现 Touch Scroll。例如。我有两个图像。首先,ViewFlipper 显示第一张图片。现在我将视图从右向左翻转。第一个图像视图向左滑出,第二个从左侧滑入。我可以通过这个Post 来实现它。但我想滚动图像。也就是说,在 Action_Move 事件上我想做 Touch Scroll。例如,当我从右向左移动触摸时,它会抛出触摸移动的量。那时输出应该部分显示两个图像。

如何做到这一点?我必须测量屏幕级别(高度和宽度)。示例代码更有帮助。

【问题讨论】:

    标签: android viewflipper android-gallery


    【解决方案1】:

    如果您只需要在不占用整个屏幕的 viewflipper 上检测滚动,请尝试以下操作

    gestureDetector = new GestureDetector(new MyGestureDetector());
    
    viewFlipper.setOnTouchListener(new View.OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return false;
                }
                return true;
            }
      });
    

    和 MyGestureDetector 将与 http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ 中的相同

    【讨论】:

      【解决方案2】:
      package com.appaapps.flipper;
      
      import android.app.Activity;
      import android.content.Context;
      import android.graphics.*;
      import android.os.Bundle;
      import android.view.MotionEvent;
      import android.view.View;
      import android.widget.ViewFlipper;
      //------------------------------------------------------------------------------
      // Flipper - Philip R Brenan at gmail.com
      //------------------------------------------------------------------------------
      public class FlipperActivity extends Activity {
          ViewFlipper f;
          DrawView a, b, c;
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              f = new ViewFlipper(this);
              a = new DrawView(this, "aaaaa");
              b = new DrawView(this, "BBBBB");
              c = new DrawView(this, "ccccc");
              f.addView(a);
              f.addView(b);
              f.addView(c);
              setContentView(f);
          }
          //------------------------------------------------------------------------------
          // Draw 
          //------------------------------------------------------------------------------
          class DrawView extends View implements View.OnTouchListener {
              final String text;
              DrawView(Context Context, String Text) {
                  super(Context);
                  text = Text;
                  setOnTouchListener(this);
              }
              public void onDraw(Canvas Canvas) {
                  super.onDraw(Canvas);
                  Paint p = new Paint();
                  p.setColor(0xffffffff);
                  p.setTextSize(20);
                  Canvas.drawText(text, 0, 20, p);
              }
              public boolean onTouch(View v, MotionEvent event) {
                  final int a = event.getAction();
                  if (a == MotionEvent.ACTION_DOWN) {
                      final int i = f.getDisplayedChild(), n = f.getChildCount();
                      f.setDisplayedChild((i + 1) % n);
                  }
                  return true;
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        • 2016-08-24
        • 2016-02-10
        • 1970-01-01
        相关资源
        最近更新 更多