标签: android-gesture

画布捏缩放到界限内

我已经坚持这个问题八个小时了,所以我觉得是时候得到一些帮助了.

在我开始我的问题之前,我只会让我知道我已经通过这个网站和谷歌,我找到的答案都没有帮助.(是一个,另一个,另一个.)

这是交易:我有一个扩展的类SurfaceView(让我们称之为MySurface)并覆盖其中的许多方法.通常情况下,它会绘制几个正方形和文本框,这一切都很好.一旦用户开始触摸,它就会转换为a Bitmap,然后绘制每个帧,直到用户释放.

这就是问题:我想实现这样一种功能:用户可以将两根手指放在屏幕上,捏缩放,也可以平移(但只能用两根手指向下).

我发现了一些缩放到缩放的实现,并通过以下方式将它们改编为我的Canvas对象MySurface:

public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.save();

    canvas.scale(mScaleVector.z, mScaleVector.z); // This is the scale factor as seen below
    canvas.translate(mScaleVector.x, mScaleVector.y); // These are offset values from 0,0, both working fine

    // Start draw code

    // ...

    // End draw code

    canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        float factor = detector.getScaleFactor();
        if …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-gesture

10
推荐指数
1
解决办法
9741
查看次数

无法为TYPE_SYSTEM_OVERLAY获取Touch事件

我喜欢开发一个类似于Swapps的应用程序.我试图在任何屏幕上显示一个按钮,这应该仅在刷卡动作时出现.我尝试使用下面的代码

    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.type =WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
    params.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
    params.format =PixelFormat.TRANSLUCENT; 
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    params.width = WindowManager.LayoutParams.WRAP_CONTENT;
    parentlay = new LinearLayout(this);
    mybt = new Button(getApplicationContext());
    bt.setText("Click to Go");

    parentlay.setBackgroundColor(Color.TRANSPARENT);
    parentlay.setHapticFeedbackEnabled(true);
    parentlay.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                // event.getAction() prints 4 and not able to get up or down event
           }
       });
   windowmanager.addView(parentlay, params);
Run Code Online (Sandbox Code Playgroud)

当用户通过捕获该事件并从而从左向右滑动时,我试图显示该按钮

    parentlay.addView(bt);
Run Code Online (Sandbox Code Playgroud)

用户从右向左滑动时删除视图

    parentlay.removeView(bt);
Run Code Online (Sandbox Code Playgroud)

如上所述,除非我将类型更改为TYPE_SYSTEM_ALERT,否则我无法获取运动事件,但是,如果冻结所有屏幕并且无法单击后退或主页按钮,是否有任何其他方法可以执行此操作.

我刚试过以下修改

    params.type =WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    |WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
   |WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

    params.height = WindowManager.LayoutParams.MATCH_PARENT;
    params.width = …
Run Code Online (Sandbox Code Playgroud)

android overlay background android-gesture

10
推荐指数
1
解决办法
1万
查看次数

如何使用本机应用在Google Glass上捕获onSwipeDown事件?

我能够使用原生应用中的SimpleOnGestureListener捕获谷歌眼镜触摸板触发的大部分事件.

使用以下代码,您可以捕获这些事件

MainActivity.java:

private GestureDetector gestureDetector;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    gestureDetector = new GestureDetector(this, new MyGestureListener());
}

@Override
public boolean onGenericMotionEvent(MotionEvent event)
{
    gestureDetector.onTouchEvent(event);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

MyGestureListener:

public class MyGestureListener extends android.view.GestureDetector.SimpleOnGestureListener
{
    @Override
    public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY)
    {     
        // check for velocity direction to identify swipe forward / backward / up and down
        return true;
    } 
}
Run Code Online (Sandbox Code Playgroud)

我找到了两个不同的手势处理源:

  1. 在Android中捕获Glass D-Pad事件
  2. 捕获手势控件以在原生Android玻璃应用中使用

但是没有一个我能够捕获swipeDown事件.

回调onFling()仅在"向前滑动","向后滑动"和"向上滑动"时调用,但在"向下滑动"时从不调用.

任何提示或你已经设法抓住了向下滑动?我在这里真的很无能为力.

android android-gesture google-glass

10
推荐指数
1
解决办法
1993
查看次数

GestureDetector的onScroll()和onFling()之间的区别

是什么区别onScroll(),并onFling()GestureDetector界面?当我打印出事件时,他们会显示完全相同的事情.至少是最后一个onScroll()onFling().

我注意到的唯一真正的区别是,onScroll()更频繁地调用,总是只有一次.

android android-gesture

10
推荐指数
1
解决办法
6891
查看次数

在Android中使用多点触控旋转和缩放

我想在多点触摸事件上旋转和缩放图像,我能够拖动,缩放图像,但我无法理解图像的旋转.我面临问题所以请尽快帮助我.我的代码在那里

    public class Touch extends Activity implements OnTouchListener {
       private static final String TAG = "Touch";
      // These matrices will be used to move and zoom image
       Matrix matrix = new Matrix();
   Matrix matrix1 = new Matrix();
   Matrix savedMatrix = new Matrix();
   Matrix savedMatrix2 = new Matrix();
   // We can be in one of these 3 states
   static final int NONE = 0;
   static final int DRAG = 1;
   static final int ZOOM = 2;
   int mode = NONE;
   float …
Run Code Online (Sandbox Code Playgroud)

android android-imageview android-gesture

9
推荐指数
1
解决办法
1万
查看次数

滑动即可删除listitem

我想实现一个滑动手势来删除ListView类似于android通知的行.

现在我只有一个ListViewonTouchListener-这么说,我已经有刷卡的检测工作.

gestureDetector = new GestureDetector(this, new GestureListener());
onTouchListener = new TouchListener();  
listview.setOnTouchListener(onTouchListener);  
Run Code Online (Sandbox Code Playgroud)

我的GestureListener班级:

protected class GestureListener extends SimpleOnGestureListener
{
    private static final int SWIPE_MIN_DISTANCE = 150;
    private static final int SWIPE_MAX_OFF_PATH = 100;
    private static final int SWIPE_THRESHOLD_VELOCITY = 100;

    private MotionEvent mLastOnDownEvent = null;

    @Override
    public boolean onDown(MotionEvent e)
    {
        mLastOnDownEvent = e;
        return super.onDown(e);
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
    {
        if(e1 == …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-listview android-gesture

9
推荐指数
1
解决办法
2万
查看次数

Android拖动并返回之前的活动,如Facebook和Google相册

我一直在寻找一种方法来实现Facebook和Google Photos等动画.在第二个活动中,当拖动图像时,图像跟随,第二个活动开始淡出,我们看到第一个活动.我试图问的图像就在这里. 在此输入图像描述

android android-animation android-gesture android-activity google-photos

9
推荐指数
1
解决办法
2221
查看次数

Android O - 指纹手势回调无法正常工作

我正在测试带有指纹手势的Pixel设备上的可访问性.我试图使用FingerprintGestureController获取手势回调,但即使在我从Settings-> Accessibility打开此应用程序的辅助功能后,也从未获得任何手势.isGestureDetectionAvailable()总是向我返回false.有人可以请帮助.

这是代码:

my_gesture_service.xml

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canRequestFingerprintGestures="true" />
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<uses-feature android:name="android.hardware.fingerprint"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
<service
            android:name="android.gestures.MyService"
            android:label="@string/app_name"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>
            <meta-data
                android:name="android.accessibilityservice"
                android:resource="@xml/my_gesture_service" />
        </service>
Run Code Online (Sandbox Code Playgroud)

MyService.java

public class MyService extends AccessibilityService {

    private static final String TAG = MyService.class.getSimpleName();

    @Override
    public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
        Log.d(TAG, "onAccessibilityEvent");
    }

    @Override
    public void onInterrupt() {
        Log.d(TAG, "onInterrupt");
    }

    @Override
    protected boolean onGesture(int gestureId) {
        Log.d(TAG, "onGesture " + gestureId);
        return super.onGesture(gestureId);
    }

    @Override
    protected boolean …
Run Code Online (Sandbox Code Playgroud)

android android-gesture android-accessibility android-fingerprint-api android-8.0-oreo

9
推荐指数
1
解决办法
953
查看次数

在一项活动中进行图像视图的投掷和pinchzoom

我有一个Imageview(就像一个杂志页面).当我浏览到那个图像然后我想要下一个图像(页面).也想要放大和缩小此图像的选项.我怎么能实现这一目标?

谢谢

android android-gesture

8
推荐指数
1
解决办法
3972
查看次数

Android"从左向右滑动以删除",列表项上的手势,ICS样式

我正在尝试在Android ICS及更高版本中实现"从左向右滑动以删除"手势.我的应用程序中有listview.我有手势探测器工作.但是当我在特定列表项目上从左向右滑动时,我希望项目随着我的手指移动.当我移动手指时,超过某一点,只有这样项目才会自行删除.OnFling()方法I目前还没有实现这一目标.

如何修改OnFling()方法以使项目随我的手指移动?

我的手势听众课是

class GestureListener extends SimpleOnGestureListener {
        private static final int SWIPE_MIN_DISTANCE = 50;
        private static final int SWIPE_MAX_OFF_PATH = 100;
        private static final int SWIPE_THRESHOLD_VELOCITY = 25;

        private MotionEvent mLastOnDownEvent = null;

        @Override
        public boolean onDown(MotionEvent e) {
            mLastOnDownEvent = e;
            return super.onDown(e);
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "On Single TAP up ", Toast.LENGTH_SHORT).show();
            return super.onSingleTapUp(e);
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) { …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-listview android-gesture

8
推荐指数
1
解决办法
2万
查看次数