android 动态仿磁贴,高仿 WIN8系统 磁贴点击下沉倾斜效果源码

demo中的图片皆来自 ‘冷笑话精选’,应用链接 冷笑话精选2.1版本。新UI。新体验。大家瞧瞧

效果描述:点击图片中央区域下沉,放手回到原来的位置。点击旁边区域图片绕对应轴倾斜。

效果图():

334239fd0f92498f38edcd9279511e76.png

e5f1e57b8c47841b9409a823c5c94dc5.png

54ffcf34e7fe6abced9b0c915c4a7162.png

private synchronized void BeginScale(Matrix matrix, float scale) {

int scaleX = (int) (vWidth * 0.5f);

int scaleY = (int) (vHeight * 0.5f);

matrix.postScale(scale, scale, scaleX, scaleY);

setImageMatrix(matrix);

}   绕轴旋转处理:

private synchronized void BeginRolate(Matrix matrix, float rolateX,

float rolateY) {

// Bitmap bm = getImageBitmap();

int scaleX = (int) (vWidth * 0.5f);

int scaleY = (int) (vHeight * 0.5f);

camera.save();

camera.rotateX(RolateY > 0 ? rolateY : -rolateY);

camera.rotateY(RolateX < 0 ? rolateX : -rolateX);

camera.getMatrix(matrix);

camera.restore();

// 控制中心点

if (RolateX > 0 && rolateX != 0) {

matrix.preTranslate(-vWidth, -scaleY);

matrix.postTranslate(vWidth, scaleY);

} else if (RolateY > 0 && rolateY != 0) {

matrix.preTranslate(-scaleX, -vHeight);

matrix.postTranslate(scaleX, vHeight);

} else if (RolateX < 0 && rolateX != 0) {

matrix.preTranslate(-0, -scaleY);

matrix.postTranslate(0, scaleY);

} else if (RolateY < 0 && rolateY != 0) {

matrix.preTranslate(-scaleX, -0);

matrix.postTranslate(scaleX, 0);

}

setImageMatrix(matrix);

}

其中:matrix.preTranslate(-vWidth, -scaleY);matrix.postTranslate(vWidth, scaleY);为确定绕轴中心点位置,很重要。

转载:http://www.adobex.com/android/source/details/00000214.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值