为什么我拖拽后的控件回不去!!帮忙看下代码是什么问题!!谢谢

问题描述

为什么我拖拽后的控件回不去!!帮忙看下代码是什么问题!!谢谢

这是JAVA代码

 package com.example.test;

import com.example.test1.R;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class Main extends Activity implements OnTouchListener{
    ImageView[] iv = new ImageView[6];
    int[] index = { R.id.imagevb1, R.id.imagevb2, R.id.imagevb3, R.id.imagevb4,
            R.id.imagevb5 ,R.id.imagevb6};
    int screenWidth, screenHeight;//界面的大小
    int lastX, lastY;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        for (int i = 0; i < index.length; i++) {
            iv[i] = (ImageView) findViewById(index[i]);
            iv[i].setOnTouchListener(this);
        }
        Display dis = this.getWindowManager().getDefaultDisplay();
        screenWidth = dis.getWidth();
        screenHeight = dis.getHeight();
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (v.getId()) {
        case R.id.imagevb1:
            get(iv[0], event);
            break;
        case R.id.imagevb2:
            get(iv[1], event);
            break;
        case R.id.imagevb3:
            get(iv[2], event);
            break;
        case R.id.imagevb4:
            get(iv[3], event);
            break;
        case R.id.imagevb5:
            get(iv[4], event);
            break;
        case R.id.imagevb6:
            get(iv[5], event);
            break;
        }
        return false;
    }

    int a1, a2, a3, a4;

    public void get(ImageView v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:// 表示用户开始触摸
            lastX = (int) event.getRawX();
            lastY = (int) event.getRawY();
            a1 = v.getLeft();
            a2 = v.getTop();
            a3 = v.getBottom();
            a4 = v.getRight();
            break;
        case MotionEvent.ACTION_MOVE:// 表示用户在移动(手指或者其他)
            int dx = (int) event.getRawX() - lastX;
            int dy = (int) event.getRawY() - lastY;
            int left = v.getLeft() + dx;
            int top = v.getTop() + dy;
            int right = v.getRight() + dx;
            int bottom = v.getBottom() + dy;
            if (left < 0) {
                left = 0;
                right = left + v.getWidth();
            }
            if (right > screenWidth) {
                right = screenWidth;
                left = right - v.getWidth();
            }
            if (top < 0) {
                top = 0;
                bottom = top + v.getHeight();
            }
            if (bottom > screenHeight) {
                bottom = screenHeight;
                top = bottom - v.getHeight();
            }
            v.layout(left, top, right, bottom);
            lastX = (int) event.getRawX();
            lastY = (int) event.getRawY();
            break;
        case MotionEvent.ACTION_UP:// 表示用户抬起了手指
            v.layout(a1, a2, a3, a4);
            break;

        }

    }

}

**这是Xml布局文件**
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/FrameLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ImageView
            android:id="@+id/imagevb1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block0" />

        <ImageView
            android:id="@+id/imagevb2"
            android:layout_width="80dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/imagevb1"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block1" />

        <ImageView
            android:id="@+id/imagevb3"
            android:layout_width="40dp"
            android:layout_height="80dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/imagevb2"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block2" />

        <ImageView
            android:id="@+id/imagevb4"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/imagevb3"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block3" />

        <ImageView
            android:id="@+id/imagevb5"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/imagevb4"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block4" />

        <ImageView
            android:id="@+id/imagevb6"
            android:layout_width="80dp"
            android:layout_height="120dp"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/imagevb5"
            android:layout_margin="12dp"
            android:layout_marginLeft="146dp"
            android:layout_marginTop="30dp"
            android:clickable="true"
            android:src="@drawable/block5" />
    </RelativeLayout>

</FrameLayout>

问题:我要的效果是我手一松开,我拖拽的控件就回到原来的位置,但是现在只有第一个可以做到松开就回去。其他控件可以拖动但是手一松开就消失了!!没错,消失了!!求大家帮忙看看是那里出错了!!!

解决方案

粗略的看了下,貌似第一个控件有这个 android:layout_alignParentTop="true" ,与这个有关系吗?

时间: 2024-08-15 03:42:06

为什么我拖拽后的控件回不去!!帮忙看下代码是什么问题!!谢谢的相关文章

app-XCODE6.1 不能拖拽Main Storyboard控件至ViewController?

问题描述 XCODE6.1 不能拖拽Main Storyboard控件至ViewController? 如题.. 刚开始学习ios app开发,新创建一个single view app, 默认设置,class name prefix为空,cutom class name未设置. 同样操作5.0.2没问题. 拜谢! 解决方案 xcode有时候不稳定,可以多拖动几次,按住ctrl键,我用7.2也有时候会有问题 解决方案二: 一般这种情况都是没有关联类class 解决方案三: 看下你的控制器和类名关联

winform-winfrom 关于控件集合的例子 请看下面代码

问题描述 winfrom 关于控件集合的例子 请看下面代码 int n = this.Controls.OfType<CheckBox>().Where(x => x.Checked).Count(); if (n > 4 - 1) { LAB.Visible = true; LAB.Text = "启用四个以上 可能会造成系统卡顿!"; LAB.ForeColor = Color.Yellow; } 我有10个复选框 每个复选框勾选的时候 会到这个集合里面来

jquery 可拖拽的窗体控件实现代码_jquery

所以要引入JQUERY框架. 把我的这个控件代码放到一个js文件里面直接引入就可以了 控件代码 复制代码 代码如下: $.fn.myDrag = function() { var self = $(this); self.css("position", "absolute"); var p = self.position(); self.css({ left: p.left, top: p.top }); self.mousedown( function(event

winfrom求能够放大、缩小、拖拽的曲线图控件

问题描述 用C#写了一个小程序,显示一段时间的温度变化.除了表格,还希望能够用曲线显示变化趋势.用了下chart,感觉不好用啊.放大缩小不舒服.求一个合适的方法解决:1.能够显示多条曲线2.能用鼠标滚轮放大缩小,鼠标左键拖拽,如果能实现鼠标选取放大更好了.3.能够显示鼠标位置的温度值4.最好能够有双坐标轴,以后希望能加上湿度或其他的.十分感谢~~~~ 解决方案 解决方案二:自带的效果不太好,DEV比较强大,不过好多公司都不准用,因为版权...

duilib界面库给container添加滚动条后子控件不能正常显示的问题

问题描述 duilib界面库给container添加滚动条后子控件不能正常显示的问题 container子控件需要任意在容器中任意拖拽,就使用了绝对布局,现在要给这个container添加垂直滚动条随子控件位置的改变而改变,现在虽然拖拽和滚动条都实现了,但是当双击向下拖动子控件到一定程度(拖动时顶部有一部分未显示)滚动条以后也不会显示这部分内容了. 解决方案 主要修改的代码如下: void CContainerUI::SetPos(RECT rc) { if( m_pVerticalScroll

winform 实现把一个控件拖到另一个控件容器里面

问题描述 winform实现把一个控件拖到另一个控件容器里面,比如把一个按钮从Apanel拖到Bpanel中 解决方案 解决方案二:搜一搜:C#控件拖拽首先你得让控件允许拖拽,然后要在开始拖拽,拖拽中,结束拖拽这个过程写些代码,做个动画效果最后就是知道了从哪里拖拽到哪里,就从A里移除控件,B里add控件,就行了解决方案三:虽然是拖动图片,但思路是一样的,那边只不过是将Image转移,你这个是将Panel的Parent进行修正解决方案四:http://download.csdn.net/detai

jquery dialog open后,服务器端控件失效的快速解决方法

 本篇文章是对jquery dialog open后,服务器端控件失效的快速解决方法.进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 jquery dialog为我们提供了非常漂亮实用的对话框,比单调的alert.confirm.prompt好用很多.    在使用jquery与.net共同开发时,直接调用jquery dialog的open后,服务器端控件全部失效了,不能执行相应的后台代码.只是源于jquery默认把dialog添加到body中,而不是原来所在的服务器端的f

onmeasure-andorid 自定义view重写了onMeasure方法后怎么控件不显示了

问题描述 andorid 自定义view重写了onMeasure方法后怎么控件不显示了 就是一个简单的自定义view,想要通过传入一个简单的自定义类,根据这个类的大小自确定view自己的大小,可是不重写onMeasure的时候还会显示出来,重写了就什么都没有了,但是点击位置还是会触发这个自定义view的事件 这是重写的方法 // view的大小由note的大小决定 @Override protected void onMeasure(int widthMeasureSpec int height

请高手一定要帮忙啊!flash多个影片剪辑拖拽后,在影片剪辑键间实现端点到端点间的连线如何实现?

问题描述 请高手一定要帮忙啊!flash多个影片剪辑拖拽后,在影片剪辑键间实现端点到端点间的连线如何实现? 将几个元件拖拽到主区域后,能够在接线柱间通过拖拽鼠标实现线路连接,并且能判断电阻位置的正反连接. 由于本人,编程底子较差,研究了一个星期也没做出来,请高手一定要帮忙啊.