设为首页 加入收藏

TOP

Android实现图片随手指旋转功能(二)
2014-11-24 07:40:28 来源: 作者: 【 】 浏览:5
Tags:Android 实现 图片 手指 旋转 功能
/ 2);


try {
Bitmap bm1 = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
bm.getHeight(), m, true);


return bm1;


} catch (OutOfMemoryError ex) {
}


return null;


}


private void drawInCenter(Canvas canvas, Bitmap bitmap, float left,
float top, String text) {
canvas.drawBitmap(bitmap, left - bitmap.getWidth() / 2,
top - bitmap.getHeight() / 2, null);
}


// 子控件位置改变重新计算角度
private int computeCurrentAngle(float x, float y) {
// 根据圆心坐标计算角度
float distance = (float) Math
.sqrt(((x - mPointX) * (x - mPointX) + (y - mPointY)
* (y - mPointY)));
int degree = (int) (Math.acos((x - mPointX) / distance) * 180 / Math.PI);
if (y < mPointY) {
degree = -degree;
}
if (degree < 0) {
degree += 360;
}


// Log.i("RoundSpinView", "x:" + x + ",y:" + y + ",degree:" + degree);
return degree;
}


// 获取距离圆心的距离
private float getDistance(float x, float y) {
// 根据圆心坐标计算角度
float distance = (float) Math
.sqrt(((x - mPointX) * (x - mPointX) + (y - mPointY)
* (y - mPointY)));
return distance;
}


//点击
private boolean SetClick(float x, float y) {
float distance = getDistance(x, y);
if (mAngle>10||mAngle<-10) {
return false;
}else if(endTime-beginTime>1000){
return false;
}
if (distance < bitmapBig.getWidth() / 2) {
int mod = 0;

if (beginAngle < 90 || 330 < beginAngle) {
mod = (imageIndex+3-1)%3;
}
else if (90 < beginAngle && 210 > beginAngle) {
mod = (imageIndex+3-2)%3;
}
else{
mod = imageIndex;
}
//回调到主界面进行处理。
listener.onModClick(mod);
}
return true;
}

public interface RotateViewListener {
void onModClick(int mode);
void onModChange(int mode);
}
}


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇APK一个反编译利器Apktool 下一篇Android JavaMail发送邮件(可发..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)