ANDORID 拖动移动几张图片的ACTIVITY 代码
时间: 2024-05-04 08:20:34 浏览: 72
在android Activity中实现图片的拖动.doc
以下是一个示例代码,可以实现在Activity中拖动多张图片并移动它们的功能。在这个例子中,我们使用了一个自定义的ImageView,它可以被拖动并在屏幕上移动。我们在Activity中使用一个GridLayout来展示这些图片,并且通过监听ImageView的拖动事件,来实现图片的移动。
```
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
private List<ImageView> mImageViewList;
private int mSelectedIndex = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化图片列表
mImageViewList = new ArrayList<>();
mImageViewList.add(createImageView(R.drawable.image1));
mImageViewList.add(createImageView(R.drawable.image2));
mImageViewList.add(createImageView(R.drawable.image3));
mImageViewList.add(createImageView(R.drawable.image4));
mImageViewList.add(createImageView(R.drawable.image5));
// 初始化GridLayout,并添加ImageView
GridLayout gridLayout = findViewById(R.id.grid_layout);
for (ImageView imageView : mImageViewList) {
gridLayout.addView(imageView);
}
}
// 创建一个可拖动的ImageView
private ImageView createImageView(int resId) {
ImageView imageView = new DraggableImageView(this);
imageView.setImageResource(resId);
imageView.setOnTouchListener(this);
return imageView;
}
// 监听ImageView的拖动事件
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getActionMasked();
ImageView imageView = (ImageView) v;
switch (action) {
case MotionEvent.ACTION_DOWN:
// 记录当前选中的ImageView的索引
mSelectedIndex = mImageViewList.indexOf(imageView);
break;
case MotionEvent.ACTION_MOVE:
// 如果当前选中了ImageView,就让它跟随手指移动
if (mSelectedIndex != -1) {
float x = imageView.getX() + event.getX() - imageView.getWidth() / 2;
float y = imageView.getY() + event.getY() - imageView.getHeight() / 2;
imageView.setX(x);
imageView.setY(y);
}
break;
case MotionEvent.ACTION_UP:
// 重置选中的ImageView的索引
mSelectedIndex = -1;
break;
}
return true;
}
// 可拖动的ImageView
class DraggableImageView extends androidx.appcompat.widget.AppCompatImageView {
public DraggableImageView(Context context) {
super(context);
}
public DraggableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DraggableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// 不处理ImageView的触摸事件,交给Activity来处理
return false;
}
}
}
```
在这个示例代码中,我们创建了一个可拖动的ImageView类,它继承自AppCompatImageView。在Activity中,我们使用GridLayout来展示这些图片,并且通过监听ImageView的拖动事件来实现图片的移动。当用户按下某个ImageView时,我们记录下它的索引,当用户移动手指时,我们让选中的ImageView跟随手指移动,当用户抬起手指时,我们重置选中的ImageView的索引。
这只是一个简单的示例代码,你可以根据自己的需要来修改它,例如添加删除图片的功能、保存图片的位置等等。
阅读全文