当前位置:   article > 正文

BottomSheetDialog的简易使用_com.google.android.material.bottomsheet.bottomshee

com.google.android.material.bottomsheet.bottomsheetdialog

工作日志记录,最近工作上有一个设计效果类似于BottomSheetDialog的效果,这里做了一个demo,记录下实现的效果和代码,方便以后可以参照一下:

注意:使用这个BottomSheetDialog时候要映入对应得MaterialDesign包,我这里是androidx版本所有使用  

compile 'com.google.android.material:material:1.0.0',如果是appconpact包编译,可以使用as上的refactor->Migrate to Appcompact来转成appcompact兼容。

实现效果如下:

MainActivity.java代码如下(具体实现):

  1. package com.xuganwen.testdrag;
  2. import androidx.annotation.NonNull;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import androidx.recyclerview.widget.GridLayoutManager;
  5. import androidx.recyclerview.widget.ItemTouchHelper;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.View;
  10. import com.chad.library.adapter.base.callback.ItemDragAndSwipeCallback;
  11. import com.chad.library.adapter.base.listener.OnItemDragListener;
  12. import com.google.android.material.bottomsheet.BottomSheetBehavior;
  13. import com.google.android.material.bottomsheet.BottomSheetDialog;
  14. import java.util.ArrayList;
  15. import java.util.Collections;
  16. import java.util.List;
  17. public class MainActivity extends AppCompatActivity {
  18. private RecyclerView recycleview;
  19. // private MyAdapter myAdapter;
  20. private MyAdapter myAdapter;
  21. private SimpleCycleProgressView progressview;
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.activity_main);
  26. recycleview = findViewById(R.id.recycleview);
  27. final List<String> list = new ArrayList<>();
  28. for (int i = 0; i < 60; i++) {
  29. list.add(i + "hehe");
  30. }
  31. //第一种方式使用 com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30库提供的adapter的扩展方法来实现,实际上也是在第二种方式的基础上再做简易封装
  32. myAdapter = new MyAdapter(R.layout.item,list);
  33. recycleview.setLayoutManager(new GridLayoutManager(this, 4));
  34. recycleview.setAdapter(myAdapter);
  35. ItemDragAndSwipeCallback itemDragAndSwipeCallback = new ItemDragAndSwipeCallback(myAdapter);
  36. ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
  37. itemTouchHelper.attachToRecyclerView(recycleview);
  38. myAdapter.enableDragItem(itemTouchHelper, R.id.tv, true);
  39. OnItemDragListener onItemDragListener = new OnItemDragListener() {
  40. @Override
  41. public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos){}
  42. @Override
  43. public void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to) {}
  44. @Override
  45. public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos) {
  46. Log.i("xuganwenlog", list.toString());
  47. }
  48. };
  49. myAdapter.setOnItemDragListener(onItemDragListener);
  50. final BottomSheetDialog dialog = new BottomSheetDialog(this);
  51. View view = View.inflate(this, R.layout.bottom_sheet_layout, null);
  52. dialog.setContentView(view);
  53. RecyclerView recycleview = view.findViewById(R.id.recycleview);
  54. recycleview.setLayoutManager(new GridLayoutManager(this, 4));
  55. recycleview.setAdapter(myAdapter);
  56. final BottomSheetBehavior<View> mDialogBehavior = BottomSheetBehavior.from((View) view.getParent());
  57. mDialogBehavior.setPeekHeight(getResources().getDisplayMetrics().heightPixels/3);
  58. mDialogBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
  59. @Override
  60. public void onStateChanged(@NonNull View bottomSheet, int newState) {
  61. if (newState == BottomSheetBehavior.STATE_HIDDEN) {
  62. dialog.dismiss();
  63. mDialogBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
  64. }
  65. }
  66. @Override
  67. public void onSlide(@NonNull View bottomSheet, float slideOffset) {
  68. }
  69. });
  70. dialog.show();
  71. findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
  72. @Override
  73. public void onClick(View view) {
  74. dialog.show();
  75. }
  76. });
  77. }
  78. }

 

简单实例,这里不再赘述。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/261924?site
推荐阅读
相关标签
  

闽ICP备14008679号