`
nanjingjiangbiao_T
  • 浏览: 2739003 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Android--手势触控屏幕控制/GestureDetector

 
阅读更多

实现本实例需要注意几个地方:

1.隐藏状态栏

 /* 隐藏状态栏 */
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                              WindowManager.LayoutParams.FLAG_FULLSCREEN);

2.隐藏标题栏

/* 隐藏标题栏 */
    requestWindowFeature(Window.FEATURE_NO_TITLE);

这个例子实现的是手势拖动效果展示。

下面给出本实例的截图:

1.初步运行


我们看到这张图片的分辨率很高,我们不能看到这幅图片的全景,这时我们需要实现拖拉效果看到图片的全景,当我们实现了手势之后,运行的效果如下:


下面给出本实例的代码:

package irdc.ex07_19;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

public class EX07_19 extends Activity
{
  private ImageView image1;
  private Bitmap bm;
  private int bmWidth=0;
  private int bmHeight=0;
  private int width=0;
  private int height=0;
  private int pointX=0;
  private int pointY=0;
  private GestureDetector detector;
  private myGestureListener gListener;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    /* 隐藏状态栏 */
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                              WindowManager.LayoutParams.FLAG_FULLSCREEN);
    /* 隐藏标题栏 */
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    /* 载丈main.xml Layout */
    setContentView(R.layout.main);
    /* 取得屏幕宽高 */    
    width=this.getWindowManager().getDefaultDisplay().getWidth();
    height=this.getWindowManager().getDefaultDisplay().getHeight();   
    /* Bitmap设定 */
    bm=BitmapFactory.decodeResource(getResources(),R.drawable.photo);
    bmWidth=bm.getWidth();
    bmHeight=bm.getHeight();
    /* ImageView初始化 */
    image1=(ImageView)findViewById(R.id.image1);
    Bitmap newB=Bitmap.createBitmap(bm,pointX,pointY, width, height);
    image1.setImageBitmap(newB);
    /* GestureDetector设置 */
    gListener = new myGestureListener();
    detector = new GestureDetector(EX07_19.this,gListener);
  }
  /* 当Activity的onTouchEvent()被触发时,
   * 触发GestureDetector的onTouchEvent() */
  @Override
  public boolean onTouchEvent(MotionEvent event)
  {
    if (detector.onTouchEvent(event))
    {
      return detector.onTouchEvent(event);
    }  
    else
    {
      return super.onTouchEvent(event);
    }
  }
  
  /* 自定义GestureListener类 */
  public class myGestureListener implements GestureDetector.OnGestureListener
  {
    /* 手指在屏幕上拖拉时触发此method */
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2,
                            float distanceX,  float distanceY)
    {
      /* 计算X轴基准点移动后的吵置 */
      if(pointX+distanceX>=0){
        if((pointX+distanceX)>(bmWidth-width)){  
          pointX=bmWidth-width;
        }else{
          pointX+=distanceX;
        }
      }else{
        pointX=0;
      }
      /* 计算Y轴基准点移动后的吵置 */
      if(pointY+distanceY>=0){  
        if((pointY+distanceY)>(bmHeight-height)){  
          pointY=bmHeight-height;
        }else{
          pointY+=distanceY;
        }
      }else{
        pointY=0;
      }
      /* 如果有移动,则更新Bitmap设定 */
      if(distanceX!=0&&distanceY!=0)
      {
        Bitmap newB=Bitmap.createBitmap(bm,pointX,pointY,width,height);
        image1.setImageBitmap(newB);
      }
      return false;
    }

    @Override
    public boolean onDown(MotionEvent arg0)
    {
      return false;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2,
        float velocityX, float velocityY)
    {
      return false;
    }

    @Override
    public void onLongPress(MotionEvent e)
    {
    }

    @Override
    public void onShowPress(MotionEvent e)
    {
    }

    @Override
    public boolean onSingleTapUp(MotionEvent e)
    {
      return false;
    }
  }
}


分享到:
评论

相关推荐

    Android-支持8方位的滑动手势检测和缩放手势检测

    在Android开发中,手势识别是用户界面交互的重要组成部分,它使得用户可以通过触摸屏幕的各种动作来控制应用程序。本项目聚焦于实现8方位滑动和缩放这两种常见手势的检测。下面将详细阐述这两种手势的原理、实现方法...

    安卓多点触控手势操作相关-Android中使用单笔手势以及多笔手势案例.rar

    在Android开发中,多点触控手势操作是提升用户体验的关键技术之一。这一技术允许用户通过一个或多个手指在屏幕上执行不同的交互动作,如缩放、旋转、滑动等。本资料包“安卓多点触控手势操作相关-Android中使用单笔...

    Android手势识别-多点触控

    以上就是关于Android手势识别和多点触控的基础知识。通过理解并熟练运用这些技术,开发者可以创建出具有丰富交互体验的应用,如图片查看器、绘图工具等。在实践中,还可以结合GestureOverlayView、Path和MotionEvent...

    安卓多点触控手势操作相关-Android手势调节音量亮度进度.rar

    综上所述,"Android手势调节音量,亮度,进度"这个项目涵盖了Android开发中的多点触控手势识别、系统资源控制(音量、亮度)、UI组件(如SeekBar)的使用以及程序调试等多个知识点,为Android开发者提供了一个实用的...

    Android安卓源码-多点触控&手势操作类源代码(5例).zip

    这些示例代码将有助于开发者了解如何在实际项目中集成多点触控和手势识别功能,通过分析和调试这些代码,可以加深对Android手势处理机制的理解,提升应用的交互体验。无论是初学者还是经验丰富的开发者,都能从中...

    传智播客免费公开课程-多点触控手势之三

    3. **手势处理框架**:了解并熟悉iOS的UIResponder链和UIGestureRecognizer类,以及Android的MotionEvent和GestureDetector。这些是实现手势识别的核心工具,掌握它们能帮助开发者高效地实现手势功能。 4. **自定义...

    传智播客免费公开课程-多点触控手势之一

    3. **Android手势编程**:阐述Java或Kotlin中处理多点触控的步骤,包括`MotionEvent`的处理和`GestureDetector`的使用。 4. **实战案例**:通过实际项目演示多点触控手势的应用,如图片查看器、地图应用等。 5. **...

    自定义GestureDetector实现多点触控

    在Android开发中,手势识别是实现用户交互的关键部分,尤其是多点触控功能,它可以极大地增强应用程序的用户体验。本篇文章将深入探讨如何自定义GestureDetector来实现多点触控功能,以及自定义手势的实现原理。 一...

    FreeformGestureDetector,Android多点触控转换手势检测器。.zip

    在Android开发中,多点触控(Multitouch)和手势识别是构建用户交互界面的重要组成部分,特别是对于游戏和复杂的UI应用。FreeformGestureDetector是一个开源项目,专注于将多点触控事件转换为可识别的手势,从而为...

    Android触屏手势识别Demo源码.rar

    Android系统基于触摸屏设备设计,提供了丰富的触控事件处理机制。主要的触摸事件类有`MotionEvent`,它包含了触摸事件的各种信息,如ACTION_DOWN(手指触摸屏幕)、ACTION_MOVE(手指在屏幕上移动)、ACTION_UP...

    安卓Android源码——(触屏手势识别).rar

    二、Android手势识别框架 1. **MotionEvent**: Android系统提供了一个名为`MotionEvent`的类,用于处理触摸事件。它包含了关于触摸屏幕的多个信息,如动作类型(ACTION_DOWN、ACTION_UP、ACTION_MOVE等)、坐标位置...

    Android多点触控变换手势检测器示例 - Java - 下载.zip

    总结,这个“Android多点触控变换手势检测器示例”是一个学习和实践多点触控手势识别的好资源,涵盖了从基本的`GestureDetector`扩展到自定义的`FreeformGestureDetector`的全过程。通过深入研究和修改这个项目,...

    Android代码-通过手势实现的缩放处理.zip

    一、Android手势识别基础 Android提供了`GestureDetector`类,它可以帮助我们识别和处理各种常见的触摸手势,如滑动、点击、长按等。对于缩放操作,我们需要使用`ScaleGestureDetector`,这个类专门用于处理缩放...

    Android 滑动切换以及屏幕手势

    ### Android滑动切换及屏幕手势实现详解 随着智能手机时代的到来,触摸屏技术逐渐成为主流,传统的物理按键被触摸屏操作所取代。其中,滑动手势因其直观性和便捷性而受到用户的广泛欢迎。本文将深入探讨如何在...

    android 手势识别学习

    本教程将聚焦于Android手势识别的实现,主要关注`GestureDetector`类。 `GestureDetector`是Android SDK中的一个核心组件,用于处理基本的手势检测。它处理了滑动(swipe)、点击(tap)和长按(long press)等常见...

    android手势及多点触控事件学习资料

    总结,Android手势识别和多点触控事件处理为开发者提供了丰富的交互方式,极大地增强了用户体验。理解并熟练掌握这些技术,对于开发出更具吸引力的Android应用至关重要。提供的DEMO文件`gesture.rar`和`motionevent....

    android 手势 多点触控

    ### 一、Android手势识别 #### 1. 基础手势 Android中最常见的基础手势包括滑动(Swipe)、点击(Tap)、长按(Long Press)、拖动(Drag)等。这些手势可以通过监听`MotionEvent`事件来实现。例如,通过检测ACTION...

    android-触摸多例子打包

    在"android-触摸多例子打包"中,可能包含了一些示例代码,如手势识别、滑动效果、多点触控等。例如,`GestureDetector`类可以帮助识别常见的手势,如滑动、双击等;`ScaleGestureDetector`则可以处理缩放手势,常...

    Android-shijian-chuli.zip_android

    5. **多点触控(Multi-Touch)**:Android支持同时处理多个触控点,例如在手势识别或缩放操作中。可以通过MotionEvent类获取到多点触控的相关信息。 6. **焦点管理(Focus Management)**:在Android中,具有焦点的...

    安卓Android源码——手势检测.zip

    Android SDK包含`GestureDetector`类,它是手势检测的核心。通过实例化`GestureDetector`并重写其回调方法,可以监听并处理各种手势。例如,`onDown(MotionEvent event)`处理初次按下,`onFling(MotionEvent e1, ...

Global site tag (gtag.js) - Google Analytics