贴吧安卓客户端android 手势缩放图片

百度贴吧提示信息很抱歉,该吧被合并您所访问的贴子无法显示。系统将在秒后,自动跳转到严正声明:凡符合法律规定的投诉请求,百度将依法予以处理,且不收取任何费用。请采取正常投诉途径投诉,切勿相信不法分子收费删贴的欺诈行为。这个安卓系统通用手势很好,可惜很多app不照标准【华为荣耀3c吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:140,053贴子:
这个安卓系统通用手势很好,可惜很多app不照标准收藏
经常单手操作的会很敏感这个标准,,, 不再用双指缩放单指也可以缩放,双击屏幕但第二击后不要离开屏幕,跟着上拖就是缩小,下拖放大,, 严格按照通用标准设计的有,chrome,快图(最近才是),opera浏览器,google地图,高德地图(最近版本才是),
苏宁易购华为官方网站,正品行货,超低价格,稀缺爆款现货抢,买好机上苏宁网上商城!苏宁易购华为官方网站,正品保障,支持货到付款,7*24小时1对1贴心服务!
值得一提的是chrome,这些国外设计的,设计智商极度重视性能和引擎的,所以拖移手感,拖放柔滑帧数,已乱真苹果的柔滑性能,,对比的所有国内设计,不想提了,智商没有办法做性能,没有智商研究法拉利引擎性能,只好在法拉利上装马桶啊空调啊座椅啊乱七八糟上乱添加,其实性能一塌糊涂,根本不像一台机上的性能表现
苹果safari浏览器的柔滑性能无与伦比,其实chrome的柔滑缩放和拖移也同样差不多性能,,,这种性能,其它国产货差的不是一个档次问题了,简直是还像隔几代不同的手机的性能了,事实上是同一手机不同app,
chrome打开大型电脑版网页,手指拖放缩放的手感,帧数,极度柔滑,简直是享受,opera新版也差不多,,,其它国产设计性能,试过一次马上删除,性能表现根本不是一回事,享受档次上去了,不会忍受性能差的,,不点名了,国内大热的某C浏览器,也许国人根本不会对性能设计优化这些敏感,帧数不柔滑也以为本来就是这样,,他们没有用过真正性能顶尖的设计罢了
很多苹果多年用户,使用安卓后无法忍受大骂,道理一样,浏览器柔滑享受习惯了,瞬间性能档次下降难以忍受,哪怕用一下,,其实,这是国内蠢猪性能设计乱搞的app在污染市场,不像苹果store这么严格档次,其实chrome,opera这些手感,丝毫已经不弱给苹果手感了,毫无区别手感,,,当然,一旦再用uc,立刻像再用古董机的手感,柔滑无影无踪
我一直5s,现在给老妈当相机去了,我对手感,性能优化这些要求非常高,不是无聊的自夸,只是多年习惯那种柔滑罢了,每个苹果多年用户一样的,,,突然感觉帧数手感哪怕下降一点,就立刻不会忍受的,,,我不是看轻你们智商,国内所谓设计
登录百度帐号手势:其实是指用户手指或触摸笔在屏幕上的连续触碰行为,Andoird对两种手势行为都提供了支持:&
Andorid提供了手势检测,并为手势检测提供了相应的监听器;&
Android允许开发者添加手势,并提供了相应的API识别用户手势;&
二、手势检测&
Gesture类:代表了一个手势检测器;&
GestureDectector.OnGestureListener类:代表一个监听器、负责对用户的手势行为提供响应;&
boolean&onDown(MotionEvent&e):当触碰事件按下时触发的方法;&
boolean&onFling(MotionEvent&e1,MotionEvent e2,float&velocityX,float&velocityY):当用户在触摸屏上&拖过&时触发该方法,velocityX,velocityY代表&拖过&动作的横向、纵向上的速度;&
abstract void&onLongPress(MotionEvent&e):当用户在屏幕上长按时触发该方法;&
abstract void&onScroll(MotionEvent&e1,MotionEvent e2,float&distanceX,float&diastanceY):当用户在屏幕上&滚动&时触发该方法;&
void&onShowPress(MotionEvent&e):当用户在屏幕上按下,而且还未移动和松动的时候触发该方法;&
boolean&onSingleTapUp(MotionEvent&e):当用户在触摸屏上的轻击事件将会触发该方法;&
三、使用步骤&
创建一个GestureDetector对象,创建对象时候必须创建一个GestureDectector.OnGestureListener监听器实例;&
为应用程序的Activity(偶尔也可以为特定组件)的TouchEvent事件绑定监听器,在事件处理中制定把Activity(或特定组件)上的TouchEvent事件交给GestureDetector处理;&
使用实例(chapter08/GestureTest)&
MainActivity.java文件&&
public&class&MainActivity&extends&Activity&implements&OnGestureListener&{&&&
&&&&GestureDetector&&&&
&&&&@Override&&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&
&&&&&&&&super.onCreate(savedInstanceState);&&&
&&&&&&&&setContentView(R.layout.main_activity);&&&
&&&&&&&&&&
&&&&&&&&detector&=&new&GestureDetector(this,&this);&&&
&&&&@Override&&&
&&&&public&boolean&onTouchEvent(MotionEvent&event)&{&&&
&&&&&&&&&&
&&&&&&&&return&detector.onTouchEvent(event);&&&
&&&&@Override&&&
&&&&public&boolean&onDown(MotionEvent&e)&{&&&
&&&&&&&&&&&
&&&&&&&&Toast.makeText(this,&"OnDown",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&return&false;&&&
&&&&@Override&&&
&&&&public&boolean&onFling(MotionEvent&e1,&MotionEvent&e2,&float&velocityX,&&&
float&velocityY)&{&&&
&&&&&&&&&&&
&&&&&&&&Toast.makeText(this,&"onFling",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&return&false;&&&
&&&&@Override&&&
&&&&public&void&onLongPress(MotionEvent&e)&{&&&
&&&&&&&&&&
&&&&&&&&Toast.makeText(this,&"onLongPress",&Toast.LENGTH_LONG).show();&&&
&&&&@Override&&&
&&&&public&boolean&onScroll(MotionEvent&e1,&MotionEvent&e2,&float&distanceX,&&&
float&distanceY)&{&&&
&&&&&&&&&&
&&&&&&&&Toast.makeText(this,&"onScroll",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&return&false;&&&
&&&&@Override&&&
&&&&public&void&onShowPress(MotionEvent&e)&{&&&
&&&&&&&&&&
&&&&&&&&Toast.makeText(this,&"onShowPress",&Toast.LENGTH_LONG).show();&&&
&&&&@Override&&&
&&&&public&boolean&onSingleTapUp(MotionEvent&e)&{&&&
&&&&&&&&&&
&&&&&&&Toast.makeText(this,&"onSingleTapUp",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&return&false;&&&
四、增加手势&
Android除了提供了手势之外,还允许应用程序把用户手势(多个持续的触摸事件在屏幕上形成特定的形状)添加到制定文件中,以备以后使用;&
GestureLibrary类:代表手势库,并提供了GestureLibraries工具来创建手势库,提供了如下4个静态方法从不同的位置加载手势:&
static&GestureLibrary&from(String path):从path代表的文件中加载手势库;&
static&GestureLibrary&fromFile(File path):从path代表的文件加载手势库;&
static&GestureLibrary&fromPrivateFile(Context&context,String&name):从制定应用程序的数据文件夹中name文件中加载手势库;&
static&GestureLibrary&fromRawResoure(Context&context,int&resourceId):从resourceId所代表的资源中加载手势库;&
获取GestureLibrary对象之后,该对象提供了如下方法来添加手势和识别手势:&
void&addGesture(String&entryName,Gesture&gesture):添加一个名为name的手势;&
Set&String&&getGestureEntries():获取手势库中所有的手势名称;&
ArrayList&Guesture&&getGestures(String&entryName):获取entryName名称对应的全部手势;&
ArrayList&Prediction&&recongize(Guesture&gesture):从当前手势库中识别与gesture匹配的全部手势;&
void&removeEntry(String&entryName):删除手势库中entryName对应的手势;&
void&removeGesture(String&entryName,Gesture&gesture):删除手势库中entryName,gesture对应的手势库;&
boolean&save():当向手势库中添加手势或从中删除手势后调用该方法保存手势库;&
为了监听GestureOverlayView组件上的手势事件,Android为GestureOverlayView提供了OnGestureLisnter、OnGesturePerformedListener、OnGesturingListener三个监听器接口,分别用于响应手势事件开始、结束、完成、取消事件;&
使用实例(chapter08/AddGesture)&
main_activity.xml文件&&
&version="1.0"&encoding="utf-8"&&&
&xmlns:android="http://schemas.android.com/apk/res/android"&&&
&&&&android:layout_width="match_parent"&&&
&&&&android:layout_height="match_parent"&&&
&&&&android:orientation="vertical"&&&&
&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&android:layout_height="wrap_content"&&&
&&&&&&&&android:gravity="center_horizontal"&&&
&&&&&&&&android:text="请在下面屏幕上绘制手势"&&&&
&&&&&&&&android:id="@+id/gesture"&&&
&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&android:layout_height="match_parent"&&&
&&&&&&&&android:gestureStrokeType="multiple"&&&&
sava.xml文件&&
&version="1.0"&encoding="utf-8"&&&
&xmlns:android="http://schemas.android.com/apk/res/android"&&&
&&&&android:layout_width="match_parent"&&&
&&&&android:layout_height="match_parent"&&&
&&&&android:orientation="vertical"&&&&
&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&android:layout_height="wrap_content"&&&
&&&&&&&&android:orientation="horizontal"&&&&
&&&&&&&&&&&
&&&&&&&&&&&&android:layout_width="wrap_content"&&&
&&&&&&&&&&&&android:layout_height="wrap_content"&&&
&&&&&&&&&&&&android:layout_marginRight="8dip"&&&
&&&&&&&&&&&&android:text="请输入手势名称"&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&android:id="@+id/gesture_name"&&&
&&&&&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&&&&&android:layout_height="wrap_content"&&&&
&&&&&&&&android:id="@+id/show"&&&
&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&android:layout_height="128dp"&&&
&&&&&&&&android:layout_marginTop="10dp"&&&
&&&&&&&&android:layout_weight="0.29"&&&&
MainActivity.java文件&&
public&class&MainActivity&extends&Activity&{&&&
&&&&EditText&editT&&&
&&&&GestureOverlayView&gestureOverlayV&&&
&&&&@Override&&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&
&&&&&&&&super.onCreate(savedInstanceState);&&&
&&&&&&&&setContentView(R.layout.main_activity);&&&
&&&&&&&&&&
&&&&&&&&editText&=&(EditText)&findViewById(R.id.gesture_name);&&&
&&&&&&&&&&
&&&&&&&&gestureOverlayView&=&(GestureOverlayView)&findViewById(R.id.gesture);&&&
&&&&&&&&&&
&&&&&&&&gestureOverlayView.setGestureColor(Color.RED);&&&
&&&&&&&&&&
&&&&&&&&gestureOverlayView.setGestureStrokeWidth(4);&&&
&&&&&&&&&&
&&&&&&&&gestureOverlayView.addOnGesturePerformedListener(new&OnGesturePerformedListener()&{&&&
&&&&&&&&@Override&&&
&&&&&&&&public&void&onGesturePerformed(GestureOverlayView&overlay,final&Gesture&gesture)&{&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&View&saveDialog&=&getLayoutInflater().inflate(R.layout.save,&null);&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&ImageView&imageView&=&(ImageView)&saveDialog.findViewById(R.id.show);&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&final&EditText&gestureEditText&=&(EditText)&saveDialog.findViewById(R.id.gesture_name);&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&Bitmap&bitmap&=&gesture.toBitmap(128,&128,&10,0xffff0000);&&&
&&&&&&&&&&&&imageView.setImageBitmap(bitmap);&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&new&AlertDialog.Builder(MainActivity.this).setView(saveDialog).setPositiveButton("保存",&new&OnClickListener()&{&&&
&&&&&&&&&&&&&&&&@Override&&&
&&&&&&&&&&&&&&&&public&void&onClick(DialogInterface&dialog,int&which)&{&&&
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&GestureLibrary&guestureLibrary&=&GestureLibraries.fromFile(Environment&&&
.getExternalStorageDirectory().getPath()+&"/mygestures");&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&guestureLibrary.addGesture(gestureEditText.getText().toString(),&gesture);&&&
&&&&&&&&&&&&&&&&&&guestureLibrary.save();&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&}).setNegativeButton("取消",&null).show();&}&&&
&&&&&&&&});&&&
五、识别用户手势&
recoginze(Gesture&guesture)方法:识别手势,该方法将会返回该手势库中所有与ges匹配的手势&两个手势的图形越相似,相似度越高;&
recogniza(Gusture&ges)方法返回为ArrayList&Prediction&,启动Prediction封装了手势的匹配信息,Predictin对象的name属性代表了匹配的手势名,score属性代表了手势的相似度;&
应用实例(/chapter08/RecognizeGesture)&
main_activity.xml文件:&&
&version="1.0"&encoding="utf-8"&&&
&xmlns:android="http://schemas.android.com/apk/res/android"&&&
&&&&android:layout_width="match_parent"&&&
&&&&android:layout_height="match_parent"&&&
&&&&android:orientation="vertical"&&&&
&&&&&&&&android:id="@+id/gesture"&&&
&&&&&&&&android:layout_width="match_parent"&&&
&&&&&&&&android:layout_height="match_parent"&&&
&&&&&&&&android:gestureStrokeType="multiple"&&&&
MainActivity.java文件&
public&class&MainActivity&extends&Activity&{&&&
&&&&GestureOverlayView&gestureOverlayV&&&
&&&&GestureLibrary&gestureLibrariL&&&
&&&&@Override&&&
&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&
&&&&&&&&super.onCreate(savedInstanceState);&&&
&&&&&&&&setContentView(R.layout.main_activity);&&&
&&&&&&&&gestureOverlayView&=&(GestureOverlayView)&findViewById(R.id.gesture);&&&
&&&&&&&&gestureLibrariLibrary&=&GestureLibraries.fromFile(Environment.getExternalStorageDirectory().getPath()&+&"/mygestures");&&&
&&&&&&&&if&(gestureLibrariLibrary.load())&{&&&
&&&&&&&&&&&&Toast.makeText(MainActivity.this,&"手势文件装在成功",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&}&else&{&&&
&&&&&&&&&&&&Toast.makeText(MainActivity.this,&"手势文件装在失败",&Toast.LENGTH_LONG).show();&&&
&&&&&&&&}&&&
&&&&&&&&&&
&&&&&&&&gestureOverlayView.addOnGesturePerformedListener(new&OnGesturePerformedListener()&{&&&
&&&&&&&&@Override&&&
&&&&&&&&public&void&onGesturePerformed(GestureOverlayView&overlay,Gesture&gesture)&{&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&ArrayList&Prediction&&predictions&=&gestureLibrariLibrary.recognize(gesture);&&&
&&&&&&&&&&&&ArrayList&String&&result&=&new&ArrayList&String&();&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&for&(Prediction&prediction&:&predictions)&{&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&if&(prediction.score&&&0.2)&{&&&
&&&&&&&&&&&&&&&&&&&&result.add("与手势{"&+&prediction.name&+&"}相似度为:"+&prediction.score);&&&
&&&&&&&&&&&&&&&&}&&&
&&&&&&&&&&&&}&&&
&&&&&&&&&&&&if&(result.size()&&&0)&{&&&
&&&&&&&&&&&&&&&&ArrayAdapter&Object&&arrayAdapter&=&new&ArrayAdapter&Object&(MainActivity.this,&&&
android.R.layout.simple_dropdown_item_1line,&&&
&&&&&&&&&&&&&&&&result.toArray());&&&
&&&&&&&&&&&&&&&&new&AlertDialog.Builder(MainActivity.this).setAdapter(arrayAdapter,&null).setPositiveButton("确定",&null).show();&&&
&&&&&&&&&&&&}&else&{&&&
&&&&&&&&&&&&&&&Toast.makeText(MainActivity.this,&"无法能找到匹配的手势",&&&
&&&&&&&&&&&&&&&Toast.LENGTH_LONG).show();&&&
&&&&&&&&&&&&}&&&
&&&&&&&&}});&&&
阅读(...) 评论()触摸屏 手势控制缩放问题 求助大神【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:84,392贴子:
触摸屏 手势控制缩放问题 求助大神收藏
我是这样写的
但是连续做两次放大手势 第二次总会先缩小一下再放大请问怎么解决if(Input.touchCount &1 ){if(Input.GetTouch(0).phase==TouchPhase.Moved && Input.GetTouch(1).phase==TouchPhase.Moved){tempPosition1 = Input.GetTouch(0).tempPosition2 = Input.GetTouch(1)._fFingerPositionLength = Vector2.Distance(tempPosition1,tempPosition2);Debug.Log(_fFingerPositionLength.ToString());_ListFingerDistanceArray.Add(_fFingerPositionLength);if(_ListFingerDistanceArray.Count &= 10){if(_ListFingerDistanceArray[0] & _ListFingerDistanceArray[9]){distance += 0.5f * mS}else{distance -= 0.5f * mS}_ListFingerDistanceArray.Clear();}}}distance = Mathf.Clamp(distance, minDistance, maxDistance);Quaternion rotation = Quaternion.Euler(y, x, 0.0f);Vector3 disVector = new Vector3( 0.0f, 0.0f, -distance );Vector3 position = rotation * disVector + target.
TouchPhase.Began的时候记录临时位置,moved时候再算
登录百度帐号}

我要回帖

更多关于 vue 图片手势缩放 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信