Android:从底部滑动时的 SharingActionView

Android: SharingActionView on swipe from bottom

我想与其他应用程序共享数据,但我不想要出现在底部工具栏的标准弹出窗口;我想要这样的观点:

我按照官方文档:https://developer.android.com/training/sharing/shareaction.html

那么 Android SDK 中是否有原生组件可以做到这一点?或者有没有图书馆可以做到这一点?

感谢大家的帮助!

在 Android OS Lollipop google 中更改了他们的分享意图设计。所以要得到这个设计你应该有棒棒糖版本及以上。

更新:

private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {

        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("image/jpg");
        File photoFile = new File(getFilesDir(), "foo.jpg");
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile));

        mShareActionProvider.setShareIntent(shareIntent);
    }
}

这样试试。

你可以这样做:

首先创建一个菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.rashish.myapplication.MainActivity">
    <item
        android:id="@+id/action_share"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="always" />
</menu>

然后创建一个方法来显示 Intent 选择器对话框,如下所示:

private void share() {
    String textToShare = "hello";
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    // set the type here i.e, text/image/ etc.
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Here");
    sharingIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}

然后在onOptionsItemSelected方法中,点击菜单项时调用这个函数:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. 
    int id = item.getItemId();

    if (id == R.id.action_share) {
        share();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

还要确保您已经像这样在 Activity 中覆盖了 onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

这是输出

screenshot from an android device