android 手指移动的动画,Android 视频手势缩放与自动吸附动效实现

本文介绍了一个实现Android视频手势缩放和自动吸附动效的类`VideoTouchScaleHandler`,包括缩放、平移、吸附等关键功能。通过监听手指移动并处理缩放手势,实现了在全屏模式下的视频缩放和平移操作,并在缩放后提供动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@date 2020/12/2

*/

public class VideoTouchScaleHandler implements IVideoTouchHandler, ScaleGestureDetector.OnScaleGestureListener {

private static final String TAG = "VideoTouchScaleHandler";

private Context mContext;

public FrameLayout mContainer;

private boolean openScaleTouch = true; // 开启缩放

private boolean mIsScaleTouch;

private Matrix mScaleTransMatrix; // 缓存了上次的矩阵值,所以需要计算每次变化量

private float mStartCenterX, mStartCenterY, mLastCenterX, mLastCenterY, centerX, centerY;

private float mStartSpan, mLastSpan, mCurrentSpan;

private float mScale;

private float[] mMatrixValue = new float[9];

private float mMinScale = 0.1F, mMaxScale = 3F;

private VideoScaleEndAnimator mScaleAnimator;

IVideoTouchAdapter mTouchAdapter;

TouchScaleResetView mScaleRestView;

public VideoTouchScaleHandler(Context context, FrameLayout container,

IVideoTouchAdapter videoTouchAdapter) {

mContext = context;

mContainer = container;

mTouchAdapter = videoTouchAdapter;

initView();

}

private void initView() {

mScaleRestView = new TouchScaleResetView(mContext, mContainer) {

@Override

public void clickResetScale() {

mScaleRestView.setVisibility(View.GONE);

if (isScaled()) {

cancelScale();

}

}

};

}

private Context getContext() {

return mContext;

}

@Override

public boolean onScaleBegin(ScaleGestureDetector detector) {

TextureView mTextureView = mTouchAdapter.getTextureView();

if (mTextureView != null) {

mIsScaleTouch = true;

if (mScaleTransMatrix == null) {

mScaleTransMatrix = new Matrix(mTextureView.getMatrix());

onScaleMatrixUpdate(mScaleTransMatrix);

}

}

mStartCenterX = detector.getFocusX();

mStartCenterY = detector.getFocusY();

mStartSpan = detector.getCur

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值