`

widget物体移动/控件拖动

阅读更多

之前已经写过通过重绘整个背景的方式,实现物体移动。今天要讲的是,如何通过移动widget,view等控件,实现部分重绘。结合之前发Droiddraw工具,使用AbsoluteLayout,可以随意放置控件在任何位置。

 

package com.sky;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsoluteLayout;
import android.widget.Button;

@SuppressWarnings("deprecation")
public class AbosoluteMove extends Activity implements OnClickListener
{
    /** Called when the activity is first created. */
	public Button button1;
	public Button button2;
	public Button button3;
	public Button button4;
	Button tmp;//临时保存,选择的BUTTON
	int x;
	int y;
	int flag;//用于标志选择哪个BUTTON
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1=(Button) findViewById(R.id.widget27);
        button2=(Button) findViewById(R.id.widget28);
        button3=(Button) findViewById(R.id.widget29);
        button4=(Button) findViewById(R.id.widget30);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
    }
	@Override
	public void onClick(View v)
	{
		// TODO Auto-generated method stub
		switch(v.getId())
		{
			case R.id.widget27:
				flag=R.id.widget27;
				setTitle("button1");
				break;
			case R.id.widget28:
				flag=R.id.widget28;
				setTitle("button2");
				break;
			case R.id.widget29:
				flag=R.id.widget29;
				setTitle("button3");
				break;
			case R.id.widget30:
				flag=R.id.widget30;
				setTitle("button4");
				break;
		}
	}
		
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		// TODO Auto-generated method stub
		return super.onKeyDown(keyCode, event);
	}
	@Override
	public boolean onTouchEvent(MotionEvent event)
	{
		// TODO Auto-generated method stub
		x = (int) event.getX();
        y = (int) event.getY();
        tmp=(Button) findViewById(flag);//获取所选中的BUTTON
        AbsoluteLayout.LayoutParams params1=new AbsoluteLayout.LayoutParams(50,50,x-25,y-50);
        tmp.setLayoutParams(params1);//设置BUTTON的新位置
        switch(event.getAction())
        {   
            case MotionEvent.ACTION_DOWN:    
            	tmp.invalidate();  
            	tmp.setText("选中down");
                break;   
            case MotionEvent.ACTION_UP:    
            	tmp.invalidate();  
            	tmp.setText("选中UP");
                break;   
            case MotionEvent.ACTION_MOVE:   
            	tmp.invalidate();   
            	tmp.setText("选中move");
                break; 
        }
        return super.onTouchEvent(event);
	}
}

 

 

分享到:
评论
1 楼 二十一 2009-07-12  
如果加上TranslateAnimation的效果就更好了

相关推荐

    Android基于widget组件实现物体移动/控件拖动功能示例

    本文实例讲述了Android基于widget组件实现物体移动/控件拖动功能。分享给大家供大家参考,具体如下: package com.sky; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; ...

    Qt控件拖拽最简实践

    Qt拖拽的基本实践,从QListWidget上拖动一个Item,拖的过程中绘制矩形框,拖到目标Widget中,创建Button,该Button在Widget内部可随意拖动; 这个例子主要是理解Qt的拖拽事件怎么使用,事件怎么被接受,数据怎么传递

    qt widget控件拖放示例

    以下将详细介绍如何在Qt中实现Widget控件的拖放功能,以及如何在拖动过程中截图。 首先,我们需要了解Qt中的拖放机制。Qt提供了QDrag和QDropEvent类来处理拖放操作。QDrag用于创建和管理拖放操作,而QDropEvent则是...

    android安卓app开发之widget界面控件使用教程.zip

    【Android 安卓 App Widget 界面控件使用教程】 Android 安卓系统提供了一种称为 App Widget 的功能,这是一类特殊的用户界面组件,可以让应用程序的部分功能直接出现在用户的主屏幕上,无需打开应用就能进行交互。...

    Qt控件QListWidget实现鼠标拖拽Item换序

    在这里,我们选择`InternalMove`,它允许用户在同一控件内部移动项目,即拖拽Item改变列表顺序。 ```cpp ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove); ``` 接下来,开启QListWidget的接受...

    appium自动化测试框架

    el1 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android....

    QT 拖拽实现2个控件的数据交互

    在QT编程中,拖放(Drag and Drop,简称DnD)是一种常用的功能,它允许用户通过鼠标将数据从一个控件移动到另一个控件,实现了直观的数据交互。本示例着重于如何在QTreeWidget和QTableWidget之间以及它们自身内部...

    android 桌面控件appwidget

    Android 桌面控件(AppWidget)是Android操作系统提供的一种独特功能,允许开发者创建可以在用户主屏幕上显示的小型应用程序组件。这些控件通常提供快速访问应用的核心功能或展示实时信息,如天气预报、日历事件或...

    <桌面widget详解(三)——桌面widget中的控件交互方法>对应源码

    博客《桌面widget详解(三)——桌面widget中的控件交互方法》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/41598819

    QT widget控件自适应窗口大小,修改比例

    在QT开发中,Widget控件是构建用户界面的基础元素,它们可以是按钮、文本框、标签等。在设计用户界面时,我们常常需要使这些控件能够自适应窗口大小的变化,以便于在不同分辨率的屏幕上提供良好的显示效果。本文将...

    日历控件dateWidget.js

    《dateWidget.js日历控件详解》 在Web开发中,日期选择器是不可或缺的元素,它为用户提供了一个直观、方便的方式来输入或选择日期。本文将深入探讨名为`dateWidget.js`的日历控件,该控件是JavaScript实现的一个...

    python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例

    本文将深入探讨PyQt5中的QSplitter布局控件,这是一个动态的布局管理器,允许用户通过拖动边界来调整子控件的大小。 QSplitter控件在PyQt5中扮演着重要的角色,它能够根据用户的交互动态调整子控件的尺寸。当用户...

    AppWidget桌面小控件

    AppWidget桌面小控件是Android操作系统提供的一种独特功能,它允许开发者将应用程序的部分功能或信息直接展示在用户的手机或平板电脑的主屏幕上,无需打开应用即可进行交互。AppWidget不仅提升了用户体验,还增加了...

    stacked widget 控件提升

    在Qt Creator中,可以通过设计模式直接拖拽Stacked Widget到布局中,或者在代码中使用`QStackedWidget`类来创建实例。例如: ```cpp QStackedWidget *stackedWidget = new QStackedWidget(this); ``` 然后,可以...

    创建主屏幕控件----App Widget

    在本教程中,我们将深入探讨如何创建一个基本的App Widget,即一个在主屏幕上显示TextView的控件。 首先,为了创建一个App Widget,你需要在AndroidManifest.xml文件中声明一个新的BroadcastReceiver,这个接收器将...

    做一个自己的Widget引擎-移动互联网hot

    ### 做一个自己的Widget引擎-移动互联网hot #### Widget概览 Widget,或称微技,是一种基于Web的小型应用程序,它能够脱离传统的Web浏览器环境独立运行,并专注于执行特定的功能,如显示天气预报、播放视频、提供...

    Android聊天控件Android-Chat-Widget.zip

    Android-Chat-Widget 是像微信、WhatsApp、Line一样的聊天控件。 Demo 如何使用? 1.在Layout中  android:id="@ id/messageInputToolBox"  android:layout_width="match_parent"  ...

    quc自定义控件(超过60个)设计师插件

    描述中提到“超多的quc自定义控件,纯widget编写”,这意味着这款工具扩展了Qt的默认控件库,提供了大量的自定义控件,全部基于Qt的Widget类进行构建。Widget是Qt框架中的基础元素,用于创建图形用户界面。这些控件...

    实例QT程序 —— Qt 控件及子控件截图

    实例QT程序 —— Qt 控件及子控件截图 编译可以直接运行。 运行环境WIN10 Qt5.9.7 。 资源为源码压缩包: SnapShotMyWidget.rar 相关文章链接如下: https://blog.csdn.net/Redboy_Crazy/article/details/108312802

Global site tag (gtag.js) - Google Analytics