ViewPager+DialogFragment实现弹窗左右滑动切换
2017-05-27 11:42
761 查看
开发中可能需要作出需要弹出浮层给用户展示一些信息,并且需要浮层能够左右滑动切换的功能。这就需要用到ViewPager+DialogFragment来实现了,可以随意添加fragment,并且能够左右滑动,随时关闭,也可以定位到打开时在想要有限展示的fragment。下边是截图和代码:主界面MainActivity:
public class MainActivity extends FragmentActivity implements OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button abrir = (Button) findViewById(R.id.botao); Button abrir2 = (Button) findViewById(R.id.botao2); abrir.setOnClickListener(this); abrir2.setOnClickListener(this); } @Override public void onClick(View v) { DialogFragmentWindow fragmentWindow = new DialogFragmentWindow(); Bundle args = new Bundle(); args.putString("first", "这是第一个浮层"); args.putString("second", "这是第二个浮层"); switch (v.getId()) { case R.id.botao: args.putString("from", "one"); fragmentWindow.setArguments(args); fragmentWindow.show(getSupportFragmentManager(), ""); break; case R.id.botao2: args.putString("from", "two"); fragmentWindow.setArguments(args); fragmentWindow.show(getSupportFragmentManager(), ""); break; } } }DialogFragmentWindow 继承自DialogFragment用来装载fragment
public class DialogFragmentWindow extends DialogFragment { public static DialogFragmentWindow intance; private String first = ""; private String second = ""; private String from = ""; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.window, container); intance = this; first = getArguments().getString("first"); second = getArguments().getString("second"); from = getArguments().getString("from"); ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewPager); List<Fragment> fragments = getFragments(); AcoesMuscularesAdapter ama = new AcoesMuscularesAdapter(getChildFragmentManager(), fragments); viewPager.setAdapter(ama); if ("two".equals(from)) {//定位在第二个fragment viewPager.setCurrentItem(1); } getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); return view; } //全屏显示 // @Override // public void onStart() { // super.onStart(); // Dialog dialog = getDialog(); // if (dialog != null) { // int width = ViewGroup.LayoutParams.MATCH_PARENT; // int height = ViewGroup.LayoutParams.MATCH_PARENT; // dialog.getWindow().setLayout(width, height); // } // } private List<Fragment> getFragments() {//添加多个fragment List<Fragment> fList = new ArrayList<Fragment>(); fList.add(MyPagerFragment.newInstance(this, first, 1)); fList.add(MyPagerFragment.newInstance(this, second, 2)); return fList; } class AcoesMuscularesAdapter extends FragmentPagerAdapter{ private List<Fragment> fragments; public AcoesMuscularesAdapter(FragmentManager fm, List<Fragment> fragments){ super(fm); this.fragments = fragments; } @Override public Fragment getItem(int position) { return this.fragments.get(position); } @Override public int getCount() { return this.fragments.size(); } } }接收并展示数据的fragment
public class MyPagerFragment extends Fragment { public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE"; public static final MyPagerFragment newInstance(DialogFragment dialogFragment, String message, int item) { MyPagerFragment f = new MyPagerFragment(); Bundle bdl = new Bundle(item); f.item = item; f.dialogFragment = dialogFragment; bdl.putString(EXTRA_MESSAGE, message); f.setArguments(bdl); return f; } private int item; private TextView mTvMsg; private Button mBtnCancle; private DialogFragment dialogFragment; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate( R.layout.pager_fragment, container, false); String msg = getArguments().getString(EXTRA_MESSAGE); mTvMsg = (TextView) view.findViewById(R.id.tv_msg); mTvMsg.setText(msg); mBtnCancle = (Button) view.findViewById(R.id.btn_cancle); mBtnCancle.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialogFragment.dismiss(); } }); return view; } }
可参考原文:http://blog.csdn.net/cunjicsdn/article/details/53421087
相关文章推荐
- ViewPager+DialogFragment实现弹窗左右滑动切换
- Android 利用ViewPager实现底部圆点导航左右滑动效果以及Fragment页面切换
- Viewpager+Fragment实现左右滑动切换页面
- TabLayout+View Pager+Fragment 实现页面左右滑动切换
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- android使用viewPager和Fragment实现滑动切换activity!
- Android通过ViewPager实现左右滑动切换图片
- ActionBarSherlock与Viewpager及Fragment结合实现仿新闻客户端顶部滑动切换效果
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- 利用ViewPager+Fragment+actionbar实现可左右滑动的Action Tab
- Fragment利用ViewPager实现左右滑动--第三方开源--SlidingTabLayout和SlidingTabStrip实现
- 在ViewPager中使用Fragment实现界面左右滑动
- viewpager+Fragment实现简单滑动切换效果
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
- 终结者:借助ViewPager实现Fragment左右滑动
- ActionBarSherlock与Fragment及ViewPager结合实现滑动切换页面
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。
- android中viewPager+fragment实现的屏幕左右切换(进阶篇)
- Android 安卓 fragment+viewpager 仿qq界面 实现点击菜单切换界面+滑动切换viewpager切换界面
- 封装自定义ViewPager实现左右自动切换和手势滑动效果