设为首页 加入收藏

TOP

Android 图片拖拽、放大缩小的自定义控件(二)
2015-02-02 14:32:11 来源: 作者: 【 】 浏览:22
Tags:Android 图片 放大 缩小 定义 控件
_POINTER_DOWN:
? ? Log.i("DOUBLETOWDOWN", "true");
? ? break;
? ?case MotionEvent.ACTION_MOVE:
? ? // Log.i("x_y_move", event.getX(0) + "__" + event.getY(0) +
? ? // "___"
? ? // + event.getX(1) + "__" + event.getY(1));
? ? mStatus = MUTILMOVE;
? ? float X0 = event.getX(0);
? ? float Y0 = event.getY(0);
? ? float X1 = event.getX(1);
? ? float Y1 = event.getY(1);
? ? float k = (Y1 - Y0) / (X1 - X0);
? ? float b = (Y0 * X1 - Y1 * X0) / (X1 - X0);
? ? int RectCenterX = mDrawableRect.centerX();
? ? int RectCenterY = mDrawableRect.centerY();
? ? float mHandsX = (X0 + X1) / 2;
? ? float mHandsY = mHandsX * k + b;
? ? double mD2 = Math.sqrt(Math.pow(X0 - X1, 2)
? ? ? + Math.pow(Y0 - Y1, 2));


? ? Log.i("GCM", mD2 + "________________X:" + mHandsX + "___Y:"
? ? ? + mHandsY);
? ? if (mD1 < mD2) {


? ? ?// double mMultiple = mD2 / mD1;
? ? ?// int newWidth = (int) (mDrawableRect.width() * mMultiple);
? ? ?// int newHeight = (int) (newWidth / mRation_WH);
? ? ?//
? ? ?// int newleft = mDrawableRect.left / 2;
? ? ?// int newtop = mDrawableRect.top / 2;
? ? ?// int newright = mDrawableRect.right * (3 / 2);
? ? ?// int newbotto = mDrawableRect.bottom * (3 / 2);
? ? ?// // mDrawableRect.set(newleft, newtop, newright,
? ? ?// newbotto);
? ? ?//
? ? ?// mDrawableRect.set(RectCenterX - newWidth / 2, RectCenterY
? ? ?// - newHeight / 2, RectCenterX + newWidth / 2,
? ? ?// RectCenterY + newHeight / 2);
? ? ?// invalidate();
? ? ?if (mDrawableRect.width() < mContext.getResources()
? ? ? ?.getDisplayMetrics().widthPixels * 2) {
? ? ? int offsetwidth = 10;
? ? ? int offsettop = (int) (offsetwidth / mRation_WH);
? ? ? mDrawableRect.set(mDrawableRect.left - offsetwidth,
? ? ? ? mDrawableRect.top - offsettop,
? ? ? ? mDrawableRect.right + offsetwidth,
? ? ? ? mDrawableRect.bottom + offsettop);
? ? ? Log.i("GCM", "aaaaaaaaaaaaaaa");


? ? ? invalidate();
? ? ?}
? ? ?// mDrawableRect.offset((int) mHandsX, (int) mHandsY);


? ? } else {
? ? ?if (mDrawableRect.width() > mContext.getResources()
? ? ? ?.getDisplayMetrics().widthPixels / 3) {
? ? ? int offsetwidth = 10;
? ? ? int offsettop = (int) (offsetwidth / mRation_WH);
? ? ? mDrawableRect.set(mDrawableRect.left + offsetwidth,
? ? ? ? mDrawableRect.top + offsettop,
? ? ? ? mDrawableRect.right - offsetwidth,
? ? ? ? mDrawableRect.bottom - offsettop);
? ? ? invalidate();
? ? ? Log.i("GCM", "bbbbbbbbbbbbbbb");
? ? ?}
? ? }
? ? mD1 = mD2;
? ? if (mHandsX < RectCenterX) {
? ? ?if (mHandsY < RectCenterY) {
? ? ? Log.i("PPPPPPP", "1");


? ? ?} else {
? ? ? Log.i("PPPPPPP", "3");
? ? ?}
? ? } else {
? ? ?if (mHandsY < RectCenterY) {
? ? ? Log.i("PPPPPPP", "2");
? ? ?} else {
? ? ? Log.i("PPPPPPP", "4");
? ? ?}
? ? }


? ? //


? ? break;
? ?case MotionEvent.ACTION_UP:
? ? Log.i("mStatus", "mutildouble_up");
? ? mStatus = 0;
? ? break;
? ?default:
? ? break;
? ?}
? ?break;
? }


? return true;
?}


?public void setBounds() {
? if (isFirst) {
? ?mRation_WH = (float) mDrawable.getIntrinsicWidth()
? ? ?/ (float) mDrawable.getIntrinsicHeight();
? ?int px_w = Math.min(getWidth(),
? ? ?dip2px(mContext, mDrawable.getIntrinsicWidth()));
? ?int px_h = (int) (px_w / mRation_WH);
? ?int left = (getWidth() - px_w) / 2;
? ?int top = (getHeight() - px_h) / 2;
? ?int right = px_w + left;
? ?int bottom = px_h + top;
? ?mDrawableRect.set(left, top, right, bottom);
? ?// mDrawableOffsetRect.set(mDrawableRect);
? ?isFirst = false;
? ?Log.i("rect1______", mDrawableRect.left + "," + mDrawableRect.top
? ? ?+ "," + mDrawableRect.right + "," + mDrawableRect.bottom);
? }
? mDrawable.setBounds(mDrawableRect);
? Log.i("rect2______", mDrawableRect.left + "," + mDrawableRect.top + ","
? ? + mDrawableRect.right + "," + mDrawableRect.bottom);
? Log.i("center_______",
? ? mDrawableRect.centerX() + ",

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Matlab插值方法大全 下一篇Android 自定义控件——图片剪裁

评论

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