Ⅰ android手机有哪些手势操作,能具体点吗
android手机有哪些手势操作:
“点击”,也叫“单击”,即轻触屏幕一下。无论是搭载何种操作系统的触控手机,这个都是出现频率最高的动作。点击主要用来打开程序,还有功能表(抽屉)。
“点住”,也叫“长按”、“按住”,按住屏幕超过两秒。此动作通常用来调出“菜单”。某些应用程序在界面空白处长按可以调出菜单;某些条目长按也可以弹出菜单,比如当您需要转发短信时,在短信对话界面长按短信内容,必然会弹出菜单,菜单中通常会有“转发”选项。
在进行文字编辑时,点住文字部分,然后调出光标进行精准定位。
当然,此动作也可用于多选、快捷视图,比如在“图库(相册)”中,默认视图下,长按相册文件夹、可对文件夹进行多选操作;打开相册文件夹后,长按照片,同样可对照片进行多选操作,选择完毕后可进行批量操作(发送、删除)。
“拖动”,准确来说应该叫做“按住并拖动”。“拖动”主屏幕编辑时的常见动作,比如对桌面“小组件”或者“图标”进行位置编辑时。另外也用于进度定位,比如播放音乐或者视频时,需要常常拖动进度条。
“双击”就是短时间内连续双击屏幕两次,主要用于快速缩放,比如浏览图片时双击可以快速放大,再次双击可以复位;浏览网页时,对文章正文部分双击可使文字自适应屏幕,当然某些视频播放器双击可切换至全屏模式。
滑动,也算是一个常见操作。主要用于查看屏幕无法完全显示的页面,功能类似鼠标的滚轮。此操作主要用于查看图片、网页、纯文本(短信、邮件、笔记)。
某些视频播放器还定义了特殊功能,比如亮度调节、快进快退,比如“MX Player”、“VPlayer”。
“缩放”动作,是查看图片、网页时最常见的操作,照相时也可使用缩放手势来进行调焦。在MX Player中,甚至可以将视频画面进行缩放。
Ⅱ android编程 三个手指的手势怎么实现啊
event.getPointerCount可以获取到。
Ⅲ Android 手势缩放一个布局,布局里面有控件,跟随缩放,求demo
给出思路:
在代码中获得要旋转的布局;
监听布局的OnTouch事件;
当触发滑动事件后,创建一个旋转动画,将动画赋予布局;
布局中的控件注册自己的监听器,跟这个旋转没有影响。
这个是我想到的,没试验,题主可以试试。
有疑问,请追问。望采纳!
Ⅳ android手势密码怎么搞
关机 按住音量键上+电源键开机 开机有个机器人的图像 按home键(像房子)进入recovery模式 选择wipe data/factory reset 按菜单键 选择yes.....点菜单键恢复出厂设置 然后选择reboot aystem now 按菜单键重新启动 这是安卓手机的解锁方法 由于机型不同 进入recovery模式的方法不同 请到网络查找对应机型进入recovery模式的方法!
Ⅳ 如何通过手势实现android view 的 缩放 平移
代码主要分两部分,一个activity一个view,代码如下:
java">packagecom.example.touch;
importandroid.app.Activity;
importandroid.os.Bundle;
{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
TouchImageViewimg=newTouchImageView(this);
setContentView(img);
}
}
packagecom.example.touch;
importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.BitmapFactory;
importandroid.graphics.Canvas;
importandroid.graphics.Matrix;
importandroid.graphics.PointF;
importandroid.util.DisplayMetrics;
importandroid.util.FloatMath;
importandroid.view.MotionEvent;
importandroid.widget.ImageView;
{
floatx_down=0;
floaty_down=0;
PointFstart=newPointF();
PointFmid=newPointF();
floatoldDist=1f;
floatoldRotation=0;
Matrixmatrix=newMatrix();
Matrixmatrix1=newMatrix();
MatrixsavedMatrix=newMatrix();
privatestaticfinalintNONE=0;
privatestaticfinalintDRAG=1;
privatestaticfinalintZOOM=2;
intmode=NONE;
booleanmatrixCheck=false;
intwidthScreen;
intheightScreen;
Bitmapgintama;
publicTouchImageView(){
super(activity);
gintama=BitmapFactory.decodeResource(getResources(),R.drawable.gintama);
DisplayMetricsdm=newDisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
widthScreen=dm.widthPixels;
heightScreen=dm.heightPixels;
matrix=newMatrix();
}
protectedvoidonDraw(Canvascanvas){
canvas.save();
canvas.drawBitmap(gintama,matrix,null);
canvas.restore();
}
publicbooleanonTouchEvent(MotionEventevent){
switch(event.getAction()&MotionEvent.ACTION_MASK){
caseMotionEvent.ACTION_DOWN:
mode=DRAG;
x_down=event.getX();
y_down=event.getY();
savedMatrix.set(matrix);
break;
caseMotionEvent.ACTION_POINTER_DOWN:
mode=ZOOM;
oldDist=spacing(event);
oldRotation=rotation(event);
savedMatrix.set(matrix);
midPoint(mid,event);
break;
caseMotionEvent.ACTION_MOVE:
if(mode==ZOOM){
matrix1.set(savedMatrix);
floatrotation=rotation(event)-oldRotation;
floatnewDist=spacing(event);
floatscale=newDist/oldDist;
matrix1.postScale(scale,scale,mid.x,mid.y);//缩放
matrix1.postRotate(rotation,mid.x,mid.y);//旋转
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}elseif(mode==DRAG){
matrix1.set(savedMatrix);
matrix1.postTranslate(event.getX()-x_down,event.getY()
-y_down);//平移
matrixCheck=matrixCheck();
matrixCheck=matrixCheck();
if(matrixCheck==false){
matrix.set(matrix1);
invalidate();
}
}
break;
caseMotionEvent.ACTION_UP:
caseMotionEvent.ACTION_POINTER_UP:
mode=NONE;
break;
}
returntrue;
}
privatebooleanmatrixCheck(){
float[]f=newfloat[9];
matrix1.getValues(f);
//图片4个顶点的坐标
floatx1=f[0]*0+f[1]*0+f[2];
floaty1=f[3]*0+f[4]*0+f[5];
floatx2=f[0]*gintama.getWidth()+f[1]*0+f[2];
floaty2=f[3]*gintama.getWidth()+f[4]*0+f[5];
floatx3=f[0]*0+f[1]*gintama.getHeight()+f[2];
floaty3=f[3]*0+f[4]*gintama.getHeight()+f[5];
floatx4=f[0]*gintama.getWidth()+f[1]*gintama.getHeight()+f[2];
floaty4=f[3]*gintama.getWidth()+f[4]*gintama.getHeight()+f[5];
//图片现宽度
doublewidth=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//缩放比率判断
if(width<widthScreen/3||width>widthScreen*3){
returntrue;
}
//出界判断
if((x1<widthScreen/3&&x2<widthScreen/3
&&x3<widthScreen/3&&x4<widthScreen/3)
||(x1>widthScreen*2/3&&x2>widthScreen*2/3
&&x3>widthScreen*2/3&&x4>widthScreen*2/3)
||(y1<heightScreen/3&&y2<heightScreen/3
&&y3<heightScreen/3&&y4<heightScreen/3)
||(y1>heightScreen*2/3&&y2>heightScreen*2/3
&&y3>heightScreen*2/3&&y4>heightScreen*2/3)){
returntrue;
}
returnfalse;
}
//触碰两点间距离
privatefloatspacing(MotionEventevent){
floatx=event.getX(0)-event.getX(1);
floaty=event.getY(0)-event.getY(1);
returnFloatMath.sqrt(x*x+y*y);
}
//取手势中心点
privatevoidmidPoint(PointFpoint,MotionEventevent){
floatx=event.getX(0)+event.getX(1);
floaty=event.getY(0)+event.getY(1);
point.set(x/2,y/2);
}
//取旋转角度
privatefloatrotation(MotionEventevent){
doubledelta_x=(event.getX(0)-event.getX(1));
doubledelta_y=(event.getY(0)-event.getY(1));
doubleradians=Math.atan2(delta_y,delta_x);
return(float)Math.toDegrees(radians);
}
//将移动,缩放以及旋转后的图层保存为新图片
//本例中没有用到该方法,需要保存图片的可以参考
publicBitmapCreatNewPhoto(){
Bitmapbitmap=Bitmap.createBitmap(widthScreen,heightScreen,
Config.ARGB_8888);//背景图片
Canvascanvas=newCanvas(bitmap);//新建画布
canvas.drawBitmap(gintama,matrix,null);//画图片
canvas.save(Canvas.ALL_SAVE_FLAG);//保存画布
canvas.restore();
returnbitmap;
}
}
Ⅵ Android通过手势实现的缩放处理,该怎么解决
主要原理是onTouchEvent事件中的参数MotionEvent,它有一个getSize()方法。在一个点的时候,该方法永远返回0,而在两个
触电的时候,该方法则根据两点相对位置变化而返回不同的值。我们只需计算出两点之间的距离变化,距离的大小表明我们希望目标变化的趋势。而getX()和
getY()方法则永远座落在两触点之间,这样趋势和目标我们都有了。剩下的就是对目标根据趋势进行放大或缩小即可。参考代码如下。
/**
*...
*
*@authorvlinux
*
*/
{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
Viewview=newMultiTouchView(this);
setContentView(view);
}{
privatefloatx1;
privatefloaty1;
privatefloatx2;
privatefloaty2;
publicMultiTouchView(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
@Override
publicbooleanonTouchEvent(MotionEventevent){
//TODOAuto-generatedmethodstub
floatsize=event.getSize();
intszi=(int)size;
intdxi=szi>>12;
intdyit=((1<<12)-1);
intdyi=szi&dyit;
DisplayMetricsmetrics=getResources().getDisplayMetrics();
floatdx=metrics.widthPixels*dxi/(float)dyit;
floatdy=metrics.heightPixels*dyi/(float)dyit;
x1=event.getX();
y1=event.getY();
x2=x1+dx;
y2=y1+dy;
invalidate();
returntrue;
}
@Override
protectedvoidonDraw(Canvascanvas){
//TODOAuto-generatedmethodstub
super.onDraw(canvas);
floatr=(float)Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)
*(y1-y2))/2;
r=50>=r?50:r;
Paintpaint=newPaint();
paint.setColor(Color.BLUE);
canvas.drawCircle(x1,y1,r,paint);
}
}
}
Ⅶ android 双指手势问题
判断pointer1和pointer2的down,同时为down时在move事件中去做距离的计算(起始距离至少为60),记录两点的起始位置和结束位置。当两点起始距离达到要求的时候执行跳转。
如果你要做角度。(只允许这一种情况下)左边的起始X肯定大于结束X,起始Y肯定大于结束Y;右边的起始X肯定小于结束X,起始Y肯定大于结束Y。
Ⅷ 如何调用原生android的手势九宫格
sdk没有提供原生的手势九宫格。需要使用自定义View自己做一个。
举例:网页链接
Ⅸ 安卓全面屏手势求教
乐意为你解答。
侧滑返回,
从下往上滑回到主桌面,
从下往上并长时停顿开启多任务。
Ⅹ android 手势判断是横向滑动还是纵向 csdn
对于Android中的手势识别可以从以下三个Listener入手——OnTouchListener、OnGestureListener、OnDoubleTapListener。这三个监听器分别是触摸监听、手势滑动监听和屏幕双击操作监听。很多的时候我们需要这些手势识别的操作,例如我们自定义控件的时候就经常会用到。下面就对这三个监听器分别进行介绍。
触摸监听器OnTouchListener
让我们的Activity去现实此接口,并重写onTouch方法。重写OnTouchListener的onTouch方法 此方法在触摸屏被触摸,即发生触摸事件(接触和抚摸两个事件)的时候被调用。示范代码如下:
@Override
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
Toast.makeText(this, "onTouch", TIME_OUT).show();
return true;
}
手势滑动监听器OnGestureListener
让我们的Activity去现实此接口,并重写onFling、onLongPress、onScroll、onDown、onShowPress、onSingleTapUp方法。示范代码如下:
/**
* 手势滑动时别调用
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {
Toast.makeText(this, "向左滑动", TIME_OUT).show();
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE) {
Toast.makeText(this, "向右滑动", TIME_OUT).show();
}
return false;
}
/**
* 长按时被调用
*/
@Override
public void onLongPress(MotionEvent e) {
Toast.makeText(this, "触发长按回调", TIME_OUT).show();
}
/**
* 滚动时调用
*/
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Toast.makeText(this, "触发滚动回调", TIME_OUT).show();
return false;
}
/**
* 在按下动作时被调用
*/
@Override
public boolean onDown(MotionEvent e) {
Toast.makeText(this, "按下回调", TIME_OUT).show();
return false;
}
/**
* 按住时被调用
*/
@Override
public void onShowPress(MotionEvent e) {
Toast.makeText(this, "按住不松回调", TIME_OUT).show();
}
/**
* 抬起时被调用
*/
@Override
public boolean onSingleTapUp(MotionEvent e) {
Toast.makeText(this, "触发抬起回调", TIME_OUT).show();
return false;
}
双击屏幕监听器OnDoubleTapListener
让我们的Activity去现实此接口,并重写onDoubleTap、onDoubleTapEvent、onSingleTapConfirmed方法。示范代码如下:
@Override
public boolean onDoubleTap(MotionEvent arg0) {
Toast.makeText(this, "触发双击回调", TIME_OUT).show();
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent arg0) {
Toast.makeText(this, "触发双击的按下跟抬起回调", TIME_OUT).show();
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent arg0) {
Toast.makeText(this, "触发单击确认回调", TIME_OUT).show();
return false;
}