EasyFloat 是一個用于在 Android 上創建懸浮窗的庫。要處理懸浮窗的拖動事件,你需要在你的 Activity 或 Fragment 中實現 EasyFloat 的接口。以下是一個簡單的示例:
dependencies {
implementation 'com.github.shadowsocks:easyfloat:3.0.3'
}
import com.github.shadowsocks.easyfloat.EasyFloat;
import com.github.shadowsocks.easyfloat.interfaces.OnDragListener;
import com.github.shadowsocks.easyfloat.interfaces.OnFloatViewClickListener;
import com.github.shadowsocks.easyfloat.models.FloatView;
public class MyFloatView extends FloatView implements OnDragListener, OnFloatViewClickListener {
public MyFloatView(Context context) {
super(context);
init();
}
private void init() {
// 設置懸浮窗的布局和資源
setLayoutResource(R.layout.float_view_layout);
setBackgroundColor(Color.WHITE);
setEdgeMargin(10);
setDraggable(true);
setOnDragListener(this);
setOnFloatViewClickListener(this);
}
@Override
public void onDrag(float x, float y) {
// 處理拖動事件
// 例如,更新懸浮窗的位置
setTranslationX(x - getWidth() / 2);
setTranslationY(y - getHeight() / 2);
}
@Override
public void onFloatViewClick(View view) {
// 處理點擊事件
Toast.makeText(getContext(), "懸浮窗被點擊", Toast.LENGTH_SHORT).show();
}
}
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.shadowsocks.easyfloat.EasyFloat;
public class MainActivity extends AppCompatActivity {
private MyFloatView myFloatView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFloatView = new MyFloatView(this);
myFloatView.setWidth(300);
myFloatView.setHeight(200);
myFloatView.setAlign(FloatView.ALIGN_CENTER);
myFloatView.show();
EasyFloat.getInstance().addView(myFloatView);
}
@Override
protected void onDestroy() {
super.onDestroy();
EasyFloat.getInstance().removeView(myFloatView);
}
}
現在,你的懸浮窗應該可以處理拖動事件了。當用戶拖動懸浮窗時,onDrag 方法會被調用,你可以在這個方法中更新懸浮窗的位置。同時,當用戶點擊懸浮窗時,onFloatViewClick 方法會被調用,你可以在這個方法中處理點擊事件。