Android 将图像拖放到屏幕上?

2023-12-09

我正在帮助项目用户将图像从一个位置移动到屏幕上的另一个位置。我已经编写了一个示例代码来移动图像,但这里的问题是,如果我移动一个图像,相邻图像也会开始移动。这是示例代码。任何一个想法。

主程序.java

public class MainActivity extends Activity  {
   int windowwidth;
   int windowheight;    
   ImageView ima1,ima2;

   private android.widget.RelativeLayout.LayoutParams layoutParams ;
   // private android.widget.RelativeLayout.LayoutParams layoutParams ;
   //private android.widget.RelativeLayout.LayoutParams layoutParams ;           

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

         windowwidth = getWindowManager().getDefaultDisplay().getWidth();
         windowheight = getWindowManager().getDefaultDisplay().getHeight();

         System.out.println("width" +windowwidth);
         System.out.println("height" +windowheight);             

         ima1 = (ImageView)findViewById(R.id.imageview1);
         ima1.setOnTouchListener(new View.OnTouchListener() {  

public boolean onTouch(View v, MotionEvent event) {
       layoutParams = (RelativeLayout.LayoutParams) ima1.getLayoutParams();

         switch(event.getAction())                   
            {
              case MotionEvent.ACTION_DOWN:                          
                    break;     

              case MotionEvent.ACTION_MOVE:
                    int x_cord = (int) event.getRawX();
                    int y_cord = (int) event.getRawY();

              System.out.println("value of x" +x_cord);
              System.out.println("value of y" +y_cord);           

                    if (x_cord > windowwidth) {
                        x_cord = windowwidth;
                       }
                    if (y_cord > windowheight) {
                        y_cord = windowheight;
                       }
             layoutParams.leftMargin = x_cord-25;
             layoutParams.topMargin = y_cord-25;
             //   layoutParams.rightMargin = x_cord-25;
             //   layoutParams.bottomMargin = y_cord-25;
             ima1.setLayoutParams(layoutParams);
                     break;
               default: break;
              }  
               return true;
            }
         });

         ima2 = (ImageView)findViewById(R.id.imageview2);
         ima2.setOnTouchListener(new View.OnTouchListener() {         

     public boolean onTouch(View v, MotionEvent event) {
         layoutParams = (RelativeLayout.LayoutParams) ima2.getLayoutParams();
              switch(event.getActionMasked())
                 {
                   case MotionEvent.ACTION_DOWN:
                       break;
                   case MotionEvent.ACTION_MOVE:
                       int x_cord = (int) event.getRawX();
                       int y_cord = (int) event.getRawY();

                       System.out.println("value of x1" +x_cord);
                   System.out.println("value of y1" +y_cord);                            

                        if (x_cord > windowwidth) {
                            x_cord = windowwidth;
                        }
                        if (y_cord > windowheight) {
                            y_cord = windowheight;
                        }
                        layoutParams.leftMargin = x_cord - 25;
                        layoutParams.topMargin = y_cord - 75;
                        ima2.setLayoutParams(layoutParams);
                        break;
                    default: break;
                }
                return true;
            }
        });
       }
   }

main.xml

  <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
  <ImageView 
    android:layout_width="100dp" 
    android:layout_height="100dp"
    android:id="@+id/imageview1" 
    android:src="@drawable/image1"  />    
<ImageView
    android:layout_width="100sp" 
    android:layout_height="100sp" 
    android:id="@+id/imageview2"
    android:src="@drawable/image2"   />             
 </RelativeLayout>

将以下代码写入您的活动文件中。

windowwidth = getWindowManager().getDefaultDisplay().getWidth();
windowheight = getWindowManager().getDefaultDisplay().getHeight();


tv1 = (ImageView)findViewById(R.id.image);
tv1.setOnTouchListener(new View.OnTouchListener() {         

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        layoutParams1 = (RelativeLayout.LayoutParams) tv1.getLayoutParams();
        switch(event.getActionMasked())
        {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }
                layoutParams1.leftMargin = x_cord - 25;
                layoutParams1.topMargin = y_cord - 75;
                tv1.setLayoutParams(layoutParams1);
                break;
            default:
                break;
        }
        return true;
    }
});

tv2 = (ImageView)findViewById(R.id.image1);
tv2.setOnTouchListener(new View.OnTouchListener() {         

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        layoutParams2 = (RelativeLayout.LayoutParams) tv2.getLayoutParams();
        switch(event.getActionMasked())
        {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();
                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }
                layoutParams2.leftMargin = x_cord - 25;
                layoutParams2.topMargin = y_cord - 75;
                tv2.setLayoutParams(layoutParams2);
                break;
            default:
                break;
        }
        return true;
    }
});

XML 文件:-

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:layout_width="50sp" android:layout_height="50sp"
        android:id="@+id/image" android:src="@drawable/image">
    </ImageView>
    <ImageView android:layout_y="30dip" android:layout_x="118dip"
        android:layout_width="50sp" android:layout_height="50sp" android:id="@+id/image1"
        android:src="@drawable/image1">
    </ImageView>
</RelativeLayout>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 将图像拖放到屏幕上? 的相关文章

随机推荐

  • 从仪器 javascript 脚本中的数据库或文本文件读取数据

    我有一个像这样的脚本 var target UIATarget localTarget var mainWindow target frontMostApp mainWindow var element mainWindow textFie
  • Android 上的后退按钮/后退键会触发哪些操作?

    我真的很困惑 我读过后退按钮 调用 onDestroy 可以关闭您当前正在运行的活动 调用 onPause 我认为 onPause 应该是正确的 但这是一个副作用 因为 Activity 进入后台 我什么也没找到在文档中 但也许我忽略了一些
  • iPhone 资源的单独目录

    默认情况下 iPhone 资源显示在主 xcode 项目视图中可见的 资源 组中 我希望能够将它们放入我决定的计算机上某个任意位置的实际的 物理上独立的目录中 有趣的是 默认的 类 组是一个实际的物理目录 但 资源 组不是 谁能告诉我该怎么
  • 为 wx.TextCtrl 创建子类

    我正在 wxpython 中为 wx TextCtrl 创建一个子类 我希望此类将额外数据添加到 wx TextCtrl 小部件 类似于将额外数据添加到 ComboBox 或 ListBox 的方式 这是我的代码 import wx cla
  • Git 排除分支的文件

    我想忽略分支中的某些文件 而不必依赖于跟踪 gitignore在与其他分支合并期间将被覆盖的文件 我一直密切关注堆栈溢出答案随着链接的博客文章 但我的存储库似乎无法识别指定的excludesfile in my git config Git
  • ASP.NET MVC:保持最后页面状态

    情况是这样的 我有一个 SearchPage 用户可以在其中进行复杂的搜索 没什么不寻常的 显示结果后 用户可以选择其中一个页面并移至另一页面 如主页面 详细信息 我有一个面包屑 它保存用户去过的地方 它可以有超过 4 个级别 如 Main
  • 使用 footer_callback 对数据表页脚中的 1+ 列求和?

    鉴于这种页脚回调数据表示例 这是我的FIDDLE 这基本上是 1 列每列总数的总和 谁能告诉我如何为超过 1 列执行此操作 我想我可能需要添加更多th我想要求和的列的标签 tfoot tr th style text align right
  • 如何在map和unordered_map之间进行选择?

    假设我想以字符串作为键来映射数据 我应该选择什么容器 map or unordered map unordered map占用更多内存 所以我们假设内存不是问题 问题是速度 unordered map通常应给出 O 1 的平均复杂度 最坏情
  • 玩游戏后重置阵列?

    我用 xcode 在 iOS 中做了一个测验 我现在拥有的是一个从数组中生成 20 个随机答案的测验 当按下按钮检查答案是否正确时 它控制标签的文本 答案也是随机生成的 我确保没有多个答案具有相同的文本 我的问题是 当提出问题时 我将数组中
  • 在 Javascript 中按对象 ID 分组

    我有一系列 ID 和组织 如下所示 var ids 1 2 3 var orgs name Org 1 id 1 name Org 2 id 2 name Org 3 id 2 我想循环这些以输出如下内容 1 name Org 1 id 1
  • 使用 Azure DevOps Services REST API 添加描述的超链接

    我的实际代码将其粘贴为纯文本 而不是超链接 发布到 https dev azure com 用户 项目 apis wit workitems type api version 5 0 preview 3 op add path fields
  • Android - 在 Facebook、Twitter、邮件、ecc 上分享

    我需要开发一个具有分享功能的应用程序 我必须在 Facebook Twitter 电子邮件以及其他服务上分享 我怎样才能做到这一点 网上有图书馆吗 对于 iOS 开发有 ShareKit 但是对于 Android 呢 谢谢 Paresh M
  • 如何使用 ACTION_PACKAGE_FIRST_LAUNCH 意图过滤器来启动应用程序?

    我正在尝试使用意图过滤器 ACTION PACKAGE FIRST LAUNCH 使应用程序在首次启动时执行一些任务 但它没有被广播接收器捕获 我的清单
  • 如何更改操作栏中下拉菜单的背景颜色

    我正在开发一个 Android 应用程序 在设计操作栏时遇到一些问题 我使用的是带有白色图标的深色操作栏 当我单击溢出图标时 会弹出一个下拉菜单 一切都很好 但我需要带有红色文本的下拉菜单的浅色背景 我尝试过编辑主题styles xml但当
  • 获取 IIS-7 及以上版本网站的 Id

    我可以通过将 ID 作为参数传递来以编程方式 C 获取 IIS 7 C Windows System32 inetsrv config applicationHost config 中托管的任何网站的物理路径 但是对于iis7来说通过代码查
  • #if __IPHONE_4_0 在 iPad 上运行吗?

    此检查在 iPad 和 iPhone 上都有效吗 我想我只是对在 iPad 上使用 iPhone 一词感到困惑 我还需要检查 iPad OS 版本吗 或者宏是否指的是一般 iOS 版本 if IPHONE 4 0 Do stuff elif
  • dplyr 中的 mutate_each / summarise_each:如何选择某些列并为变异列提供新名称?

    我有点困惑dplyr verb mutate each 使用基本的方法非常简单mutate将一列数据转换为 z 分数 并在 data frame 中创建一个新列 此处名称为z score data newDF lt DF gt select
  • 如何在机器人框架中的小黄瓜式测试中指定句子中间的参数?

    使用 Robot Framework 我打算使用 Gherkin 风格的测试 因为它是 BDD ATDD 的通用语言 我可以指定这样的测试 Test Cases New alert Given there were no alerts so
  • C# 中标准 I/O 的非阻塞读取

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想要一个来自控制台的非阻塞读取功能 我如何用 C 编写它 理查德 达顿有一个解
  • Android 将图像拖放到屏幕上?

    我正在帮助项目用户将图像从一个位置移动到屏幕上的另一个位置 我已经编写了一个示例代码来移动图像 但这里的问题是 如果我移动一个图像 相邻图像也会开始移动 这是示例代码 任何一个想法 主程序 java public class MainAct