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
方法会被调用,你可以在这个方法中处理点击事件。