导航:首页 > 操作系统 > android自定义手势

android自定义手势

发布时间:2022-05-29 14:10:22

1. android的双指手势是怎么实现的

android对多点触摸的支持
使用MotionEvent对象方式处理,比如开始触控时会触发ACTION_DOWN而移动操作时为 ACTION_MOVE最终放开手指时触发ACTION_UP事件。当然还有用户无规则的操作可能触发ACTION_CANCEL这个动作。
对于onTouchEvent方法的参数MotionEvent我们可以详细处理来实现对多点触控的了解,

2. uc浏览器安卓版可以设置手势吗

您好,很高兴为您服务!
UC浏览器支持手势功能,单指-左滑退后、右滑前进、上下滑动翻页。
双指-左右滑动切换窗口(多窗口时),上滑关闭当前窗口、下滑新建窗口。
双指-合拢缩小页面,张开放大页面。最新版的浏览器,在菜单-设置-基本设置中可以找到滑屏前进后退的开关哦。现在是有哪一方面的需求呢,是希望能够自定义手势么?
如果仍有问题,请您继续向我们反馈,我们会第一时间为您跟进。

3. 如何在android中实现swipe的手势功能及页面拖动动画

SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了.
Swipe在android里面是叫Fling ^_^
首先创建自己的一个手势detector类:

private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200;然后在onFling方法中, 判断是不是一个合理的swipe动作: if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper.showPrevious(); }里的viewFlipper是含有多个view的一个container, 可以很方便的调用prev/next view, 加上animation动画, 可以达到一些不错的效果:
viewFlipper = (ViewFlipper)findViewById(R.id.flipper); slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 自定义的animation可以查看具体的XML, 比如从左边进来的一个动画:

4. android手机有哪些手势操作,能具体点吗

android手机有哪些手势操作:

  1. “点击”,也叫“单击”,即轻触屏幕一下。无论是搭载何种操作系统的触控手机,这个都是出现频率最高的动作。点击主要用来打开程序,还有功能表(抽屉)。

  2. “点住”,也叫“长按”、“按住”,按住屏幕超过两秒。此动作通常用来调出“菜单”。某些应用程序在界面空白处长按可以调出菜单;某些条目长按也可以弹出菜单,比如当您需要转发短信时,在短信对话界面长按短信内容,必然会弹出菜单,菜单中通常会有“转发”选项。

    在进行文字编辑时,点住文字部分,然后调出光标进行精准定位。

    当然,此动作也可用于多选、快捷视图,比如在“图库(相册)”中,默认视图下,长按相册文件夹、可对文件夹进行多选操作;打开相册文件夹后,长按照片,同样可对照片进行多选操作,选择完毕后可进行批量操作(发送、删除)。

  3. “拖动”,准确来说应该叫做“按住并拖动”。“拖动”主屏幕编辑时的常见动作,比如对桌面“小组件”或者“图标”进行位置编辑时。另外也用于进度定位,比如播放音乐或者视频时,需要常常拖动进度条。

  4. “双击”就是短时间内连续双击屏幕两次,主要用于快速缩放,比如浏览图片时双击可以快速放大,再次双击可以复位;浏览网页时,对文章正文部分双击可使文字自适应屏幕,当然某些视频播放器双击可切换至全屏模式。

  5. 滑动,也算是一个常见操作。主要用于查看屏幕无法完全显示的页面,功能类似鼠标的滚轮。此操作主要用于查看图片、网页、纯文本(短信、邮件、笔记)。

    某些视频播放器还定义了特殊功能,比如亮度调节、快进快退,比如“MX Player”、“VPlayer”。

  6. “缩放”动作,是查看图片、网页时最常见的操作,照相时也可使用缩放手势来进行调焦。在MX Player中,甚至可以将视频画面进行缩放。

5. Android中如何让手势和滚动视图滑动方向一致

  1. 采用自定义Toolbar所以得更改默认布局,使用不带ActionBar的主题。

其他要素

  1. 基本成型的布局了,代码中没有什么注释,看代码的速度要远胜于看注释速度。由于代码都是常用的,写大量的注释反而感觉很多余。

  2. 获取到手势滑动的方向和距离,以此来判断是上滑还是下滑。

  3. 上滑:将Toolbar隐藏,下滑:将Toolbar显示。

6. android 自定义相机拍照界面 手势设置焦距问题

这个拍照界面是每个厂家的ROM都不一样的,如果你喜欢小米的拍照界面,你可以把手机系统刷成小米ROM,不能刷的话,你也可以通过第三方APP解决,比如美图秀秀,360拍照都有手势设置焦距的功能。

7. 使用安卓系统的手机怎么设置手势锁屏

安卓手机设置锁屏密码的方法:

注意:各台设备上的 Android 系统不尽相同。这些说明仅适用于运行 Android 7.0 及以上版本的设备。查看 Android 系统版本参考设置。

1、打开设备的“设置”应用

2、在“个人”下方,点按安全。

3、要更改屏幕锁定设置,请点按“屏幕锁定”旁边的“设置”。具体设置包括自动锁定前的等待时间、电源按钮锁定和锁定屏幕消息。

4、要选择一种屏幕锁定方式,请点按屏幕锁定方式。

注意:“密码”方式会要求至少输入 4 个字母或数字。只要您能设置一个安全系数高的密码,这就是最安全的选项。

8. android手势识别,自定义View,滑动后长按无效,这个问题怎么处理啊

你的意思是处于滑动状态中停留2秒作为长按么?要知道,长按和滑动是互斥的,若按下后滑动,则会取消掉判断长按的。

9. Android 自定义ImageView添加手势后,移动或缩放怎么判断越界的问题

初始化的时候已经进行了缩放

Java code

//第一个图片
float scaleX = w / leftImage.getWidth();
float scaleY = h / leftImage.getHeight();
leftMinScale = scaleX > scaleY ? scaleX : scaleY;
leftMatrix.setScale(leftMinScale, leftMinScale);

10. android怎样可以控制手势滑动的

我们先来明确一些概念,首先,Android的事件处理机制是基于Listener(监听器)来实现的,比我们今天所说的触摸屏相关的事件,就是通 过onTouchListener。其次,所有View的子类都可以通过setOnTouchListener()、 setOnKeyListener()等方法来添加对某一类事件的监听器。第三,Listener一般会以Interface(接口)的方式来提供,其中 包含一个或多个abstract(抽象)方法,我们需要实现这些方法来完成onTouch()、onKey()等等的操作。这样,当我们给某个view设 置了事件Listener,并实现了其中的抽象方法以后,程序便可以在特定的事件被dispatch到该view的时候,通过callbakc函数给予适 当的响应。
看一个简单的例子,就用最简单的TextView来说明(事实上和ADT中生成的skeleton没有什么区别)。
Java代码

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// init TextView
TextView tv = (TextView) findViewById(R.id.page);

// set OnTouchListener on TextView
tv.setOnTouchListener(this);

// show some text
tv.setText(R.string.text);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show();
return false;
}

我们给TextView的实例tv设定了一个onTouchListener,因为GestureTest类实现了OnTouchListener 接口,所以简单的给一个this作为参数即可。onTouch方法则是实现了OnTouchListener中的抽象方法,我们只要在这里添加逻辑代码即 可在用户触摸屏幕时做出响应,就像我们这里所做的——打出一个提示信息。
这里,我们可以通过MotionEvent的getAction()方法来获取Touch事件的类型,包括 ACTION_DOWN, ACTION_MOVE, ACTION_UP, 和ACTION_CANCEL。ACTION_DOWN是指按下触摸屏,ACTION_MOVE是指按下触摸屏后移动受力点,ACTION_UP则是指松 开触摸屏,ACTION_CANCEL不会由用户直接触发(所以不在今天的讨论范围,请参考ViewGroup.onInterceptTouchEvent(MotionEvent))。借助对于用户不同操作的判断,结合getRawX()、getRawY()、getX()和getY()等方法来获取坐标后,我们可以实现诸如拖动某一个按钮,拖动滚动条等功能。待机可以看看MotionEvent类的文档,另外也可以看考TouchPaint例子。
回到今天所要说的重点,当我们捕捉到Touch操作的时候,如何识别出用户的Gesture?这里我们需要GestureDetector.OnGestureListener接口的帮助,于是我们的GestureTest类就变成了这个样子。
Java代码

public class GestureTest extends Activity implements OnTouchListener,
OnGestureListener {
....
}

随后,在onTouch()方法中,我们调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给 GestureDetector 来分析是否有合适的callback函数来处理用户的手势。
Java代码

@Override
public boolean onTouch(View v, MotionEvent event) {

// OnGestureListener will analyzes the given motion event
return mGestureDetector.onTouchEvent(event);
}

接下来,我们实现了以下6个抽象方法,其中最有用的当然是onFling()、onScroll()和onLongPress()了。我已经把每一个方法代表的手势的意思写在了注释里,大家看一下就明白了。
// 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发Java代码

@Override
public boolean onDown(MotionEvent e) {

// TODO Auto-generated method stub
Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();

return false;
}

// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发
// 注意和onDown()的区别,强调的是没有松开或者拖动的状态

@Override
public void onShowPress(MotionEvent e) {

// TODO Auto-generated method stub
}

用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发

@Override

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

用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {
// TODO Auto-generated method stub
return false;
}

// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}

// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// TODO Auto-generated method stub
return false;
}

我们来试着做一个onFling()事件的处理吧,onFling()方法中每一个参数的意义我写在注释中了,需要注意的是Fling事件的处理代 码中,除了第一个触发Fling的ACTION_DOWN和最后一个ACTION_MOVE中包含的坐标等信息外,我们还可以根据用户在X轴或者Y轴上的 移动速度作为条件。比如下面的代码中我们就在用户移动超过100个像素,且X轴上每秒的移动速度大于200像素时才进行处理。

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

// 参数解释:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
// 触发条件 :
// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {

// Fling left
Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show();
} else
if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {

// Fling right
Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show();
}

return false;
}

问题是,这个时候如果我们尝试去运行程序,你会发现我们根本得不到想要的结果,跟踪代码的执行的会发现onFling()事件一直就没有被捕捉到。这正是一开始困扰我的问题,这到底是为什么呢?
我在讨论组的Gesture detection这个帖子里找到了答案,即我们需要在onCreate中tv.setOnTouchListener(this);之后添加如下一句代码。
tv.setLongClickable(true);
只有这样,view才能够处理不同于Tap(轻触)的hold(即ACTION_MOVE,或者多个ACTION_DOWN),我们同样可以通过layout定义中的android:longClickable来做到这一点。
这次遇到的这个问题和上次MapView中setOnKeyListener遇到的问题挺类似,其实都是对SDK的了解不够全面,遇到了一次记住了就好。不过话说回来,Google在文档方面确实需要加强了,起码可以在OnGestureListener中说明需要满足那些条件才可以保证手势被正确识别。

阅读全文

与android自定义手势相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:27
不能修改的pdf 浏览:751
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491