Android開發 完全自定義懸浮可拖動view無需懸浮權限

一個自定義View的懸浮按鈕Lib擴展性良好,懸浮佈局可是配其他佈局

用到了震動所以需要震動權限,該權限已經添加到manifest但是6.0以上需要自己手動添加

   <uses-permission android:name="android.permission.VIBRATE" />

使用方法

在layout佈局文件根佈局

<?xml version="1.0" encoding="utf-8"?>
<com.isoftstone.floatlibrary.widget.FloatViewLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_float"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</com.isoftstone.floatlibrary.widget.FloatViewLayout>

 

其次需要懸浮按鈕佈局,之所以寫成佈局形式,是因爲拓展新良好,需要任何樣式都可以實現

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="@dimen/floating_icon_size"
        android:layout_height="@dimen/floating_icon_size"
        android:src="@mipmap/float_btn" />
</LinearLayout>

 

Activity中只需要調用相關方法即可

 

public class MainActivity extends AppCompatActivity {
    private FloatViewLayout floatViewLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        floatViewLayout = (FloatViewLayout) findViewById(R.id.layout_float);
        floatViewLayout.setmFloatView(new FloatViewImpl() {
            @Override
            public View createFloatView() {
                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_float_view, null);
                return view;
            }

            @Override
            public int setFloatViewSideOffset() {
                return super.setFloatViewSideOffset();
            }

            @Override
            public boolean setEnableBackground() {
                return false;
            }
        });
    }
}


FloatViewImpl是一個靜態類已經實現了setFloatViewSideOffset()和setEnableBackground()方法並且給了默認值,可自行修改。
createFloatView()方法:主要是用來創建懸浮按鈕View
setFloatViewSideOffset()方法:是用來設置懸浮按鈕與邊緣偏移量主要是用於縮進一定像素
setEnableBackground()方法:是用來設置是否保留滑動出現背景色並實現消失懸浮按鈕

 

 

 

源碼

歡迎進入我的微信公衆號:


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章