Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android布局不工作_Java_Android_Android Layout - Fatal编程技术网

Java Android布局不工作

Java Android布局不工作,java,android,android-layout,Java,Android,Android Layout,Hii我做了一个简单的布局,其中我使用了3个图像视图,我使中间的一个可以移动。 Her是我的布局类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="mat

Hii我做了一个简单的布局,其中我使用了3个图像视图,我使中间的一个可以移动。 Her是我的布局类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;
}
公共类MainActivity扩展活动{
私有ImageView imageView1、imageView2;
公共静态IV类扩展ImageView{
私人活动能力;
公共IV(上下文){
超级(上下文);
}
公共IV(上下文、属性集属性){
超级(上下文,attrs);
}
公共活动(主要活动法){
mActivity=act;
}
已更改系统上的公共无效权限(int可见性){
mActivity.getState().onSystemActivityChanged(可见性);
}
}
专用接口状态{
无效应用();
说明下一步();
系统上的无效性可更改(int可见性);
}
State getState(){
返回mState;
}
静态长度=500;
IV模拟图像;
文本视图mText1、mText2;
国家统计局;
公共活动(){
//TODO自动生成的构造函数存根
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG|u保持屏幕|u打开| WindowManager.LayoutParams.FLAG|u锁定时显示| WindowManager.LayoutParams.FLAG|u全屏);
setContentView(R.layout.activity_main);
startService(新意图(这个,MyLockService.class));
System.out.println(R.id.image);
imageView2=(ImageView)findViewById(R.id.imageView2);
imageView2.setOnTouchListener(新的OnTouchListener()
{
浮动lastX;
PointF DownPT=new PointF();//按下鼠标时记录鼠标位置
PointF StartPT=new PointF();//记录“img”的起始位置
@SuppressLint(“新API”)
@凌驾
公共布尔onTouch(视图v,运动事件)
{
int eid=event.getAction();
开关(eid)
{
case MotionEvent.ACTION\u移动:
PointF mv=新的PointF(event.getX()-DownPT.x,event.getY()-DownPT.y);
如果(Build.VERSION.SDK_INT=170){
MarginLayoutParams lp=(MarginLayoutParams)imageView2.getLayoutParams();
lp.设定利润率(178,0,0,0);
imageView2.setLayoutParams(lp);
}
如果(lastX 260)
{
imageView2.setX(270);
图像视图2.setY(8);
完成();
}
}
打破
case MotionEvent.ACTION\u DOWN:

如果(Build.VERSION.SDK_INT您可以尝试如下更改布局

<?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>


否,通过更改此选项,应用程序将抛出错误。顺便说一句,应用程序运行正常,我只在“仅查看”部分和“触摸移动”部分出现问题。这很好。但我现在无法移动图像