Pinterest app中的長按菜單效果:BubbleActions

jopen 8年前發布 | 15K 次閱讀 Android開發 移動開發

Pinterest app中的長按菜單效果。

使用說明:

Gradle

compile 'me.samthompson:bubble-actions:1.1.0'

例子

創建 BubbleActions

BubbleActions是使用一個流式接口fluent interface (類似于SnackBar)來創建的,支持最多添加5個操作。你可以這樣創建ubbleActions :

BubbleActions.on(myView)
        .addAction("Star", R.drawable.bubble_star, new BubbleAction.Callback() {
            @Override
            public void doAction() {
                    Toast.makeText(v.getContext(), "Star pressed!", Toast.LENGTH_SHORT).show();
                }
            })
        // ... add more actions ...
        .show();

每個BubbleActions中的action有三部分:

  1. 一個操作的名稱,顯示在bubble的 上面。

  2. bubble的drawable。

  3. 一個在主線程上執行的callback,當用戶離開某個action的時候觸發。

基本的例子

在activity中我們設置了一個長按監聽者來顯示BubbleActions:

findViewById(R.id.my_view).setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(final View v) {
            BubbleActions.on(v)
                    .addAction("Star", R.drawable.bubble_star, new BubbleActions.Callback() {
                        @Override
                        public void doAction() {
                            Toast.makeText(v.getContext(), "Star pressed!", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .addAction("Share", R.drawable.bubble_share, new BubbleActions.Callback() {
                        @Override
                        public void doAction() {
                            Toast.makeText(v.getContext(), "Share pressed!", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .addAction("Hide", R.drawable.bubble_hide, new BubbleActions.Callback() {
                        @Override
                        public void doAction() {
                            Toast.makeText(v.getContext(), "Hide pressed!", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .show();
        }
    });

Kotlin 的例子

這里是和上面相同的例子,不過是Kotlin版本:

val textView = findViewById(R.id.text_view);
textView.setOnLongClickListener {
    BubbleActions.on(textView)
            .addAction("Star", R.drawable.bubble_star, {
                Toast.makeText(textView.context, "Star pressed!", Toast.LENGTH_SHORT).show()
            })
            .addAction("Share", R.drawable.bubble_share, {
                Toast.makeText(textView.context, "Share pressed!", Toast.LENGTH_SHORT).show()
            })
            .addAction("Hide", R.drawable.bubble_hide, {
                Toast.makeText(textView.context, "Hide pressed!", Toast.LENGTH_SHORT).show()
            })
            .show()
    true
}

改變字體

要使用自定義字體?沒問題!你可以在創建BubbleActions的時候用withTypeface配置bubble actions的typeface:

BubbleActions.on(myView).withTypeface(myFancyTypeface)
    // ... add actions ...

改變indicator

默認的indicator是半透明圓圈,在觸摸事件的最后一次down touch發生的時候顯示,你可以通過使用withIndicator方法來改變這個indicator:

BubbleActions.on(myView).withIndicator(R.drawable.my_fancy_indicator)
    // ... add actions ...


項目地址: https://github.com/SamThompson/BubbleActions

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!