之前已经写过通过重绘整个背景的方式,实现物体移动。今天要讲的是,如何通过移动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);
}
}
分享到:
相关推荐
本文实例讲述了Android基于widget组件实现物体移动/控件拖动功能。分享给大家供大家参考,具体如下: package com.sky; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; ...
Qt拖拽的基本实践,从QListWidget上拖动一个Item,拖的过程中绘制矩形框,拖到目标Widget中,创建Button,该Button在Widget内部可随意拖动; 这个例子主要是理解Qt的拖拽事件怎么使用,事件怎么被接受,数据怎么传递
以下将详细介绍如何在Qt中实现Widget控件的拖放功能,以及如何在拖动过程中截图。 首先,我们需要了解Qt中的拖放机制。Qt提供了QDrag和QDropEvent类来处理拖放操作。QDrag用于创建和管理拖放操作,而QDropEvent则是...
【Android 安卓 App Widget 界面控件使用教程】 Android 安卓系统提供了一种称为 App Widget 的功能,这是一类特殊的用户界面组件,可以让应用程序的部分功能直接出现在用户的主屏幕上,无需打开应用就能进行交互。...
在这里,我们选择`InternalMove`,它允许用户在同一控件内部移动项目,即拖拽Item改变列表顺序。 ```cpp ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove); ``` 接下来,开启QListWidget的接受...
el1 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android....
在QT编程中,拖放(Drag and Drop,简称DnD)是一种常用的功能,它允许用户通过鼠标将数据从一个控件移动到另一个控件,实现了直观的数据交互。本示例着重于如何在QTreeWidget和QTableWidget之间以及它们自身内部...
Android 桌面控件(AppWidget)是Android操作系统提供的一种独特功能,允许开发者创建可以在用户主屏幕上显示的小型应用程序组件。这些控件通常提供快速访问应用的核心功能或展示实时信息,如天气预报、日历事件或...
博客《桌面widget详解(三)——桌面widget中的控件交互方法》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/41598819
在QT开发中,Widget控件是构建用户界面的基础元素,它们可以是按钮、文本框、标签等。在设计用户界面时,我们常常需要使这些控件能够自适应窗口大小的变化,以便于在不同分辨率的屏幕上提供良好的显示效果。本文将...
《dateWidget.js日历控件详解》 在Web开发中,日期选择器是不可或缺的元素,它为用户提供了一个直观、方便的方式来输入或选择日期。本文将深入探讨名为`dateWidget.js`的日历控件,该控件是JavaScript实现的一个...
本文将深入探讨PyQt5中的QSplitter布局控件,这是一个动态的布局管理器,允许用户通过拖动边界来调整子控件的大小。 QSplitter控件在PyQt5中扮演着重要的角色,它能够根据用户的交互动态调整子控件的尺寸。当用户...
AppWidget桌面小控件是Android操作系统提供的一种独特功能,它允许开发者将应用程序的部分功能或信息直接展示在用户的手机或平板电脑的主屏幕上,无需打开应用即可进行交互。AppWidget不仅提升了用户体验,还增加了...
在Qt Creator中,可以通过设计模式直接拖拽Stacked Widget到布局中,或者在代码中使用`QStackedWidget`类来创建实例。例如: ```cpp QStackedWidget *stackedWidget = new QStackedWidget(this); ``` 然后,可以...
在本教程中,我们将深入探讨如何创建一个基本的App Widget,即一个在主屏幕上显示TextView的控件。 首先,为了创建一个App Widget,你需要在AndroidManifest.xml文件中声明一个新的BroadcastReceiver,这个接收器将...
### 做一个自己的Widget引擎-移动互联网hot #### Widget概览 Widget,或称微技,是一种基于Web的小型应用程序,它能够脱离传统的Web浏览器环境独立运行,并专注于执行特定的功能,如显示天气预报、播放视频、提供...
Android-Chat-Widget 是像微信、WhatsApp、Line一样的聊天控件。 Demo 如何使用? 1.在Layout中 android:id="@ id/messageInputToolBox" android:layout_width="match_parent" ...
描述中提到“超多的quc自定义控件,纯widget编写”,这意味着这款工具扩展了Qt的默认控件库,提供了大量的自定义控件,全部基于Qt的Widget类进行构建。Widget是Qt框架中的基础元素,用于创建图形用户界面。这些控件...
实例QT程序 —— Qt 控件及子控件截图 编译可以直接运行。 运行环境WIN10 Qt5.9.7 。 资源为源码压缩包: SnapShotMyWidget.rar 相关文章链接如下: https://blog.csdn.net/Redboy_Crazy/article/details/108312802