EasyFloat 是一个用于在 Android 上创建悬浮窗的库。要处理悬浮窗的拖动事件,你需要在你的 Activity 或 Fragment 中实现 EasyFloat 的接口。以下是一个简单的示例:
- 首先,确保你已经在项目的 build.gradle 文件中添加了 EasyFloat 的依赖:
dependencies { implementation 'com.github.shadowsocks:easyfloat:3.0.3' }
- 创建一个自定义的浮动窗口类,实现 EasyFloat 接口:
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(); } }
- 在你的 Activity 或 Fragment 中创建一个 MyFloatView 实例,并将其添加到窗口:
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
方法会被调用,你可以在这个方法中处理点击事件。