简单实现从底部弹起的分享BottomDialog
来源:互联网 发布:web os 软件 编辑:程序博客网 时间:2024/05/29 19:46
前言
这是小编开启博客生涯的第一编技术文章,如果文章中存在问题,请各路大神多多指点哈!
今天小编将给大家实现一个从手机屏幕下方弹起的分享面板,效果如下:
实现思路
1.自定义Dialog继承DialogFragment
2.自定义style
具体步骤
一、自定义Dialog继承DialogFragment
1.首先是继承官方DialogFragment,添加recycleview控件到自定义的Dialog的主布局文件中,然后重写OnCreateView方法并这个方法中给recylceview设置适配器(适配器代码后面会给出)和把recycleview设置为GridLayout模式来实现面板的项目网格式分布。
`public class Fragment_dialog extends DialogFragment {
RecyclerView recycleBottom;
private Bottom_sheetAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.my_bottom_sheets, null);
recycleBottom= (RecyclerView) v.findViewById(R.id.recycle_bottom);
adapter=new Bottom_sheetAdapter();
GridLayoutManager m=new GridLayoutManager(getActivity(),3);
recycleBottom.setLayoutManager(m);
recycleBottom.setAdapter(adapter);
return v;
}
2.在OncreateDialog方法中运用Dialog创建一个Dialog,并把这个Dialog的style设置为自定义style.
//重点部分
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
*Dialog alertDialog=new Dialog(getActivity(),R.style.MyBottom_sheet_style);
alertDialog.setContentView(R.layout.my_bottom_sheets);
alertDialog.setCanceledOnTouchOutside(true)//点击面板外部可以dismiss面板
Window window=alertDialog.getWindow();
WindowManager.LayoutParams wlp=window.getAttributes();
wlp.gravity= Gravity.BOTTOM;//设置面板的位置在屏幕底部
wlp.width=WindowManager.LayoutParams.MATCH_PARENT;
wlp.height=WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(wlp);
return alertDialog;*
}
}
二、自定义style
<style name="MyBottom_sheet_style"> <item name="android:backgroundDimEnabled">false</item> <item name="android:windowNoTitle">true</item> <item name="android:windowAnimationStyle">@style/Animation.Design.BottomSheetDialog</item>//注意要把android support library 升级到23.2版本要不然是无法运用Animation.Design.BottomSheetDialog属性 </style>
三、在MainActivity运用
在MainActivity中的点击事件中动态创建自定义的Dialog对象
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @OnClick(R.id.btn) public void onClick() { Fragment_dialog dialog=new Fragment_dialog(); dialog.show(getSupportFragmentManager(),"bottom"); }}
适配器代码
public class Bottom_sheetAdapter extends RecyclerView.Adapter<Bottom_sheetAdapter.Myholder> { private Share_Item_ClickListener share_item_click; @Override public Myholder onCreateViewHolder(ViewGroup parent, int viewType) { Myholder myholder=null; View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.bottom_sheets_item_layout,null); myholder=new Myholder(view,share_item_click); return myholder; } @Override public void onBindViewHolder(Myholder holder, int position) { switch (position){ case 0: holder.iv.setImageResource(R.drawable.wechat_circle); holder.tv.setText("朋友圈"); break; case 1: holder.iv.setImageResource(R.drawable.wechat); holder.tv.setText("微信"); break; case 2: holder.iv.setImageResource(R.drawable.qq); holder.tv.setText("QQ"); break; case 3: holder.iv.setImageResource(R.drawable.qq_zone); holder.tv.setText("QQ空间"); break; case 4: holder.iv.setImageResource(R.drawable.xinlang); holder.tv.setText("新浪微博"); break; case 5: holder.iv.setImageResource(R.drawable.tecent); holder.tv.setText("腾讯微博"); break; } } public void setShare_item_click(Share_Item_ClickListener listener){ this.share_item_click=listener; } @Override public int getItemCount() { return 6; } static class Myholder extends RecyclerView.ViewHolder implements View.OnClickListener { public RelativeLayout share_item; public ImageView iv; public TextView tv; private Share_Item_ClickListener itemClickListener; public Myholder(View itemView, Share_Item_ClickListener itemClickListener) { super(itemView); iv= (ImageView) itemView.findViewById(R.id.share_image); tv= (TextView) itemView.findViewById(R.id.tv_text); share_item= (RelativeLayout) itemView.findViewById(R.id.share_parent); this.itemClickListener=itemClickListener; share_item.setOnClickListener(this); } @Override public void onClick(View v) { itemClickListener.OnShare_itemClick(getAdapterPosition()); } }}
- 简单实现从底部弹起的分享BottomDialog
- BottomDialog 一个自定义的从底部弹出的 dialog,仿照微博的分享弹框
- kotlin实现Android实现底部对话框BottomDialog(圆角,直角)
- BottomDialog 是一个通过 DialogFragment 实现的底部弹窗布局,并且支持弹出动画,支持任意布局http://shaohui.me
- 底部导航的简单实现
- 防止Activity底部弹起
- 实现从底部弹出的PopupWindow
- 一个简单的底部Tab切换实现
- PopupWindow 实现仿微信底部弹出的分享菜单
- 社会化分享的简单实现
- Android实现从底部弹出的Dialog(一)
- Android实现从底部弹出的Dialog(二)
- 利用JQuery实现从底部回到顶部的功能
- 利用JQuery实现从底部回到顶部的功能
- 实现从屏幕底部向上弹出新窗口的思路
- 实现一个从底部向上弹出的菜单栏
- 一个简单的底部弹窗的实现
- 简单实现Android底部工具栏
- Qt 在GraphicsView中 打开一幅图片
- [面试] 算法(七)—— 逆序输出链表
- 《C++》02 C++的变量类型
- Qt GraphicsView框架中实现多个item之间的层次调整功能
- PHP中如何设置error_reporting错误报告级别
- 简单实现从底部弹起的分享BottomDialog
- CRCK, array 1.2
- js面向对象
- JavaScript函数通过多个()连续调用多次并返回最终结果
- ORA-00845: MEMORY_TARGET not supported on this system
- 浅析ConcurrentHashMap
- 构造函数与创建对象
- linux centos yum安装LAMP环境
- JOS lab4 Lapic与Intel多核系统