在外圈android内左右移动图像

时间:2014-07-09 14:03:26

标签: android android-layout transition ontouchevent ontouchlistener

我有两张图片,一张是大圆圈,另一张是圆圈中心的相机图片。

我需要什么:我可以触摸相机图像,我想在外圈内左右移动,所以当我移动相机图像时,我想打开一个活动,当我向右移动时,我想打开不同的活动。

img.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            RelativeLayout.LayoutParams mParams = (RelativeLayout.LayoutParams) img.getLayoutParams();
            //LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) img.getLayoutParams();
            // TODO Auto-generated method stub
            int eid = event.getAction();
            int x = (int) event.getX();
            int y = (int) event.getY();
            switch (eid) {
            case MotionEvent.ACTION_MOVE:

                x = (int) event.getRawX();      
                mParams.leftMargin = x - 100;
                img.setLayoutParams(mParams);

                y = (int) event.getRawY();
                mParams.rightMargin = y - 100;
                img.setLayoutParams(mParams);
              //  touchMove(x, y);

                break;
            case MotionEvent.ACTION_DOWN:
                //touchStart(x, y);
                    break;
            case MotionEvent.ACTION_UP:
                startDirection = direction;
                break;

            default:
                break;
            }
            return true;
        }

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

     <RelativeLayout
         android:id="@+id/rectangle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentTop="true"
         android:layout_centerHorizontal="true"
         android:layout_marginTop="49dp"
         android:gravity="center"
         android:paddingLeft="10dp"
         android:paddingRight="10dp"
         android:background="@drawable/outer_circle" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="hello_world"
            android:src="@drawable/camera" />
    </RelativeLayout>

</RelativeLayout>

当我跑步时,它向左移动但是从圆圈向外移动,当我向右移动时,外圈变得拉伸。

1 个答案:

答案 0 :(得分:0)

我正在给你的ImageView一个RelativeLayout类型的Params对象。无法确定,因为无法看到/ img / variable的类型。

如果触摸的视图是您想要移动的视图,您也可以 使用已声明的函数/ v / View varlable,您只需要做 将其转换为ImageView。

拉伸是某种奇怪的。这是整个布局文件吗?所以你的实际布局是 具有圆圈背景的RelativeLayout?