Kéo thả hình ảnhChắc các bạn đã từng sữ dụng wa ứng dụng kéo thả các Icon để sắp xếp màn hình cho smartphone.. Đây là tính năng khá thú vị mà tất cả các smartphone đều hổ trợ.. Sau đây m
Trang 1Kéo thả hình ảnh
Chắc các bạn đã từng sữ dụng wa ứng dụng kéo thả các Icon để sắp xếp màn hình cho smartphone Đây là tính năng khá thú vị mà tất cả các smartphone đều hổ trợ Sau đây mình sẽ demo cách thức hoạt động của nó Mình sẽ tạo ra 1 ImageView và kéo thả trên màn hình Virtual
1/ Đầu tiên các bạn tạo 1 project như sau:
Project name: DragNew
Build Target: Android 2.3.1
Application name: DragNew
Package name: com.sample.dragdrop
Create Activity: MyActivity
2/ Các bạn chỉnh lại phần main.xml:
<? xml version ="1.0" encoding ="utf-8"?>
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
>
< ImageView android:id ="@+id/img"
</ LinearLayout >
3/ Code trong phần strings.xml:
<? xml version ="1.0" encoding ="utf-8"?>
< resources >
< string name ="hello"> Hello World, MyActivity! </ string >
< string name ="app_name"> DragNew </ string >
< string name ="drag"> drag </ string >
</ resources >
4/ Code lại phần DragNew.Java như sau:
package com.sample.dragdrop;
Trang 2import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MyActivity extends Activity {
private View selected_item = null;
private int offset_x = 0;
private int offset_y = 0;
/** Called when the activity is first created */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewGroup vg = (ViewGroup)findViewById(R.id.vg);
vg.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) { switch(event.getActionMasked())
Trang 3case MotionEvent.ACTION_MOVE:
int x = (int)event.getX() - offset_x;
int y = (int)event.getY() - offset_y;
int w = getWindowManager().getDefaultDisplay().getWidth() - 100; int h = getWindowManager().getDefaultDisplay().getHeight() - 100; if(x > w)
x = w;
if(y > h)
y = h;
LinearLayout.LayoutParams lp = new
LinearLayout.LayoutParams(
new ViewGroup.MarginLayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); lp.setMargins(x, y, 0, 0);
selected_item.setLayoutParams(lp);
break;
default:
break;
}
return true;
Trang 4});
ImageView img = (ImageView)findViewById(R.id.img);
img.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) { switch(event.getActionMasked())
{
case MotionEvent.ACTION_DOWN:
offset_x = (int)event.getX();
offset_y = (int)event.getY();
selected_item = v;
break;
default:
break;
}
return false;
}
});
}
}
Cuối cùng Debug ứng dụng và ta sẽ được:
Trang 5Các bạn có thể kéo thả hình thoải mái và khi đến các góc của Virtual thì hình sẽ tự động thu nhỏ lại Bạn nào có ý kiến đóng góp vui lòng post bài vào forum trang web
www.laptrinhdidong.vn Mình sẽ theo dõi forum thường xuyên ^^