摘要:效果类类通过静态方法获取实例,向传参数数据使用传递参数绑定控件设置圆角设置适配器监听页面改变页面选中设置缓存页数设置默认页添加三项数据
效果:
PagerData类:
1 package com.cloud.viewpagerdemo; 2 3 import java.io.Serializable; 4 5 class PagerData implements Serializable { 6 7 private int mImageResId; 8 private String mContent; 9 10 PagerData(int imageResId, String content) { 11 mImageResId = imageResId; 12 mContent = content; 13 } 14 15 public int getImageResId() { 16 return mImageResId; 17 } 18 19 public void setImageResId(int imageResId) { 20 mImageResId = imageResId; 21 } 22 23 public String getContent() { 24 return mContent; 25 } 26 27 public void setContent(String content) { 28 mContent = content; 29 } 30 }
PagerFragment类:
1 package com.cloud.viewpagerdemo; 2 3 import android.graphics.Outline; 4 import android.os.Bundle; 5 import android.support.annotation.NonNull; 6 import android.support.annotation.Nullable; 7 import android.support.v4.app.Fragment; 8 import android.view.LayoutInflater; 9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.view.ViewOutlineProvider; 12 import android.widget.ImageView; 13 import android.widget.TextView; 14 15 public class PagerFragment extends Fragment { 16 17 private static final String ARG_DATA = "data"; 18 19 private PagerData mData; 20 21 private ImageView mImageView; 22 private TextView mContent; 23 24 /** 25 * 通过静态方法获取Fragment实例,向Fragment传参数 26 * @param data 数据 27 * @return Fragment 28 */ 29 public static PagerFragment newInstance(PagerData data) { 30 PagerFragment fragment = new PagerFragment(); 31 32 //使用FragmentArguments传递参数 33 Bundle args = new Bundle(); 34 args.putSerializable(ARG_DATA, data); 35 fragment.setArguments(args); 36 return fragment; 37 } 38 39 @Override 40 public void onCreate(@Nullable Bundle savedInstanceState) { 41 super.onCreate(savedInstanceState); 42 mData = (PagerData) getArguments().getSerializable(ARG_DATA); 43 } 44 45 @Nullable 46 @Override 47 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, 48 @Nullable Bundle savedInstanceState) { 49 View view = inflater.inflate(R.layout.fragment_pager, container, false); 50 51 //绑定控件 52 mImageView = view.findViewById(R.id.image_view); 53 mContent = view.findViewById(R.id.text_content); 54 55 //ImageView设置圆角 56 ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { 57 @Override 58 public void getOutline(View view, Outline outline) { 59 outline.setRoundRect(0, 0, mImageView.getWidth(), mImageView.getHeight(), 16); 60 } 61 }; 62 63 mImageView.setOutlineProvider(viewOutlineProvider); 64 mImageView.setClipToOutline(true); 65 mImageView.setImageResource(mData.getImageResId()); 66 mContent.setText(mData.getContent()); 67 68 return view; 69 } 70 }
PagerActivity:
1 package com.cloud.viewpagerdemo; 2 3 import android.support.v4.app.Fragment; 4 import android.support.v4.app.FragmentManager; 5 import android.support.v4.app.FragmentStatePagerAdapter; 6 import android.support.v4.view.ViewPager; 7 import android.support.v7.app.AppCompatActivity; 8 import android.os.Bundle; 9 import android.widget.TextView; 10 11 import java.util.ArrayList; 12 import java.util.List; 13 14 public class PagerActivity extends AppCompatActivity { 15 16 private ListmPagerData = new ArrayList<>(); 17 18 private ViewPager mViewPager; 19 private TextView mTextPage; 20 21 private String page = "1 / 3"; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_pager); 27 28 initData(); 29 30 FragmentManager fragmentManager = getSupportFragmentManager(); 31 32 mViewPager = findViewById(R.id.view_pager); 33 mTextPage = findViewById(R.id.text_page); 34 //设置ViewPager适配器 35 mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) { 36 @Override 37 public Fragment getItem(int position) { 38 return PagerFragment.newInstance(mPagerData.get(position)); 39 } 40 41 @Override 42 public int getCount() { 43 return mPagerData.size(); 44 } 45 }); 46 47 //监听页面改变 48 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 49 @Override 50 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 51 52 } 53 54 @Override 55 public void onPageSelected(int position) { 56 //页面选中 57 page = String.valueOf(position + 1) + " / " + String.valueOf(mPagerData.size()); 58 mTextPage.setText(page); 59 } 60 61 @Override 62 public void onPageScrollStateChanged(int state) { 63 64 } 65 }); 66 //设置缓存页数 67 mViewPager.setOffscreenPageLimit(3); 68 //设置默认页 69 mViewPager.setCurrentItem(0); 70 71 mTextPage.setText(page); 72 } 73 74 private void initData() { 75 //添加三项数据 76 mPagerData.add(new PagerData(R.drawable.img_0, "Photo by Adam Krowitz")); 77 mPagerData.add(new PagerData(R.drawable.img_1, "Photo by Samuel Ferrara")); 78 mPagerData.add(new PagerData(R.drawable.img_2, "Photo by Earth")); 79 } 80 }
fragment_pager:
1 28 9 23 24 44 4532 33 42 43
activity_pager:
1 29 10 19 20 29 3027 28 38 39 40 4150 51
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/3021.html
摘要:现使用提供的和简单实现这一功能。此外,中还有一个方法,在实现方法时,调用这个方法,从服务器获取新的数据并更新不同组件上的数据,从而实现刷功能。注意这边请求服务端数据必须重新开启一个线程执。 一、文章内容 现在常见的Android或者iOS应用中都可以看到一个页面的下面有多个tab,点击不同的tab页面重新加载。现使用Android提供的ViewPager、PageAdapter和Fra...
摘要:描述之前有做过一个记账本,拿来练手的,做的很简单,是用开发的最近想把这个重新完善一下,添加了一些新的功能,并选用来开发已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来。描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的; 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发; APP已...
摘要:同时我们或许还会有这样的体验打开联系人界面,手指向上滑动,联系人列表也会跟着一动态权限申请步骤以及需要注意的一些坑掘金因为工作需要,简单研究了一下权限申请,在提供的的基础上,写了一个简单的。 自定义未读消息红点提示 - Android - 掘金未读消息提示,可自定义颜色及Padding 效果展示... Android 实现底部对话框 - Android - 掘金最近项目上需要实现一个底...
摘要:在内获取返回结果有自己的和,但却不具有方法,但可以先取得托管它的,然后再返回数据。整理自安卓权威编程指南第章章。你可以从这里获取源码版权声明如何使用开发列表详情界面由在年月日写作。 在移动App里,有几种常见的界面形式: 手机上:一个列表界面A,点击某个条目后进入详情界面B,左右滑动可以切换到上/下条的详情界面; 平板上:由于屏幕足够大,列表界面A和详情界面B可以同时显示在屏幕上,分...
摘要:贝塞尔曲线根据万能的,支持上拉加载添加掘金最近的项目,使用比较多,导致需要写大量的和。转载请注明来源会了这些,你也能成为自定义大咖掘金自定义自定义主要掌握以下四块内容绘制机制掌握及相关类的使用。 ViewPager+Fragment 组合的预加载和懒加载 - Android - 掘金转载请标明出处: http://www.jianshu.com/p/7a47... 预加载介绍 View...
阅读 2629·2021-10-08 10:04
阅读 3004·2021-09-22 15:58
阅读 1619·2019-08-30 14:17
阅读 1616·2019-08-28 18:05
阅读 1371·2019-08-26 13:33
阅读 582·2019-08-26 12:20
阅读 481·2019-08-26 12:18
阅读 3091·2019-08-26 11:59