2024年Android最全Android之GestureDetector-简单手势操作及通过手势缩放图片,2024年最新头条面试流程

最后

希望本文对你有所启发,有任何面试上的建议也欢迎留言分享给大家。

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

好了~如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

上述代码创建了一个GestureDetector对象,并实现了GestueDetector.OnGestureListener的监听器实例,然后为Activity的Touchevent事件绑定监听器,在事件处理中指定把Activity上的TouchEvent事件交给GestueDetector处理。GestueDetector就会检测是否触发了特定的手势动作。

运行上面的代码,当我们随意在屏幕上触碰时,程序将会检测到我们执行了什么手势。

效果:

下面看一个通过手势缩放图片的例子:

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.widget.ImageView;

import android.widget.Toast;

public class GestureTest extends Activity implements GestureDetector.OnGestureListener

{

//定义手势检测器实例

GestureDetector detector;

ImageView imageView;

//初始化的图片资源

Bitmap bitmap;

//定义图片的宽高

int width, height;

//记录当前的缩放比

float currentScale = 1;

//控制图片缩放的Matrix对象

Matrix matrix;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//创建手势检测器

detector = new GestureDetector(this);

imageView = (ImageView)findViewById(R.id.picture);

matrix = new Matrix();

//获取被缩放的源图片

bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.pic);

//获得位图宽

width = bitmap.getWidth();

//获取位图高

height = bitmap.getHeight();

//设置ImageView初始化时显示的图片

imageView.setImageBitmap(BitmapFactory.decodeResource(this.getResources()),R.drawable.pic);

}

//将该Activity上的触碰事件交给GestureDetector处理

@Override

public boolean onTouchEvent(MotionEvent e){

return detector.onTouchEvent(e);

}

@Override

public boolean onDown(MotionEvent e){

Toast.makeText(this, “onDown”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

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

velocityX = velocityX > 4000 ? 4000 : velocityX;

velocityX = velocityX < -4000 ? -4000 : velocityX;

//根据手势的速度来计算缩放比,如果velocityX > 0,放大图像,否则缩小图像

currentScale = currentScale > 0.01 ? currentScale : 0.01f;

//重置Matrix

matrix.reset();

//缩放Matrix

matrix.setScale(currentScale,currentScale,160,200);

BitmapDrawable tmp = (BitmapDrawable)imageView.getDrawable();

//如果图片还未回收,先强制回收该图片

if (!tmp.getBitmap().isRecycled()){

tmp.getBitmap().recycle();

}

//根据原始位图和Matrix创建新图片

Bitmap bitmap2 = Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true);

//显示新的位图

imageView.setImageBitmap(bitmap2);

return true;

}

@Override

public void onLongPress(MotionEvent e){

Toast.makeText(this, “onLongPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY){

Toast.makeText(this, “onScroll”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public void onShowPress(MotionEvent e){

Toast.makeText(this, “onShowPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onSingleTapUp(MotionEvent e){

Toast.makeText(this, “onSingleTapUp”, Toast.LENGTH_SHORT).show();

return false;

}

}

最后

代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。

所以,长征路还长,大家还是好好地做个务实的程序员吧。

最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值