Android布局无法正常工作

时间:2014-04-19 05:57:24

标签: java android android-layout

I want to move center image and want to show that this image shown on the webicon image and lock images respectively.我做了一个简单的布局,其中我使用3个图像视图,我使中心可移动。 她是我的布局类main.xml: -

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <view class="com.example.screenlock.MainActivity$IV"
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="center"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|fill_horizontal"
        android:background="#60000000"
        android:orientation="horizontal"
        android:padding="7dp" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:scaleType="fitXY"
            android:layout_alignParentLeft="true"
            android:src="@drawable/browser1" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/circle" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right|fill_vertical"
            android:layout_weight="0"
            android:scaleType="fitXY"
            android:src="@drawable/lock" />
    </LinearLayout>

</FrameLayout>

和我的MainActivity.java类如下: -

public class MainActivity extends Activity {
private ImageView imageView1, imageView2;

public static class IV extends ImageView {
    private MainActivity mActivity;
    public IV(Context context) {
        super(context);
    }
    public IV(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public void setActivity(MainActivity act) {
        mActivity = act;
    }
    public void onSystemUiVisibilityChanged(int visibility) {
        mActivity.getState().onSystemUiVisibilityChanged(visibility);
    }
}

private interface State {
    void apply();
    State next();
    void onSystemUiVisibilityChanged(int visibility);
}
State getState() {
    return mState;
}

static int TOAST_LENGTH = 500;
IV mImage;
TextView mText1, mText2;
State mState;

public MainActivity() {
    // TODO Auto-generated constructor stub
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    startService(new Intent(this, MyLockService.class));
    System.out.println(R.id.image);


    imageView2 = (ImageView)findViewById(R.id.imageView2);

    imageView2.setOnTouchListener(new OnTouchListener()
    {
        float lastX;
        PointF DownPT = new PointF(); // Record Mouse Position When Pressed Down
        PointF StartPT = new PointF(); // Record Start Position of 'img'

        @SuppressLint("NewApi")
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {

            int eid = event.getAction();
            switch (eid)
            {
                case MotionEvent.ACTION_MOVE :

                    PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
                    if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD){

                        v.scrollBy((int) (event.getX()-lastX), 0);
                        lastX = event.getX();
                        if(lastX >= 170){
                            MarginLayoutParams lp = (MarginLayoutParams) imageView2.getLayoutParams();
                            lp.setMargins(178, 0, 0, 0);
                            imageView2.setLayoutParams(lp);

                        }

                        if(lastX <= 25){
                            MarginLayoutParams lp = (MarginLayoutParams) imageView2.getLayoutParams();
                            lp.setMargins(0, -16, 0, 0);
                            imageView2.setLayoutParams(lp);
                        }
                        System.out.println("XXXXXXX "+lastX);

                    }
                    else{

                        imageView2.setX((int)(StartPT.x+mv.x));
                        imageView2.setY((int)(StartPT.y+mv.y));
                        StartPT = new PointF( imageView2.getX(), imageView2.getY() );


                    //System.out.println("X: "+imageView2.getX()+"Y: "+imageView2.getY());
                    if(imageView2.getX() < -70)
                    {
                        imageView2.setX(-103);
                        imageView2.setY(6);
                        //System.out.println("--------------------------------------");


                    }
                    else if(imageView2.getX() > 260)
                    {
                        imageView2.setX(270);
                        imageView2.setY(8);
                        finish();
                    }
                   }

                    break;
                case MotionEvent.ACTION_DOWN :
                    if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD){
                        lastX = event.getX();
                    }
                    else{

                        DownPT.x = event.getX();
                        DownPT.y = event.getY();
                        StartPT = new PointF( imageView2.getX(), imageView2.getY() );
                    }

                    break;
                case MotionEvent.ACTION_UP :
                    v.scrollTo(0, 0);
                    break;
                default :
                    break;
            }
            return true;
        }
    });

}


public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    // Use onWindowFocusChanged to get the placement of
    // the image because we have to wait until the image
    // has actually been placed on the screen  before we
    // get the coordinates. That makes it impossible to
    // do in onCreate, that would just give us (0, 0).
    imageView1 = (ImageView) findViewById(R.id.imageView1);
    int[] a = new int[2];
    imageView1.getLocationInWindow(a);
    int x = a[0];
    int y = a[1];
    System.out.println("X "+x+" Y "+y);
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

我在预蜂窝模拟器上执行此代码。但是当我移动中心图像时,它分别隐藏在左右图像后面。 我希望中心图像显示在两个图像的其余部分上,并且还想显示两个图像。 基本上,中心图像是一个圆圈,其余两个图像是浏览器和锁定图像,我希望该圆圈与该图像重叠。 我正在锁屏上工作。

请帮助解决我的布局问题以及如何解决这个问题?????

1 个答案:

答案 0 :(得分:0)

您可以尝试更改布局,如下所示......

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <view
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.example.screenlock.MainActivity$IV"
        android:scaleType="center" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|fill_horizontal" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#60000000"
            android:orientation="horizontal"
            android:padding="7dp" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher" />

            <View
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

            <ImageView
                android:id="@+id/imageView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right|fill_vertical"
                android:layout_weight="0"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher" />
        </LinearLayout>

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/ic_launcher" />
    </FrameLayout>

</FrameLayout>
相关问题