通过viewpager+fragment结合FragmentPagerAdapter实现自定义view定时轮转
来源:互联网 发布:php后缀的文件怎么打开 编辑:程序博客网 时间:2024/06/07 09:49
效果如下:
废话不多说直接上代码
java代码MainActivity.java
public class MainActivity extends FragmentActivity {private String json = "[{\"title\":\"标题1\",\"content\":\"内容1\", \"url\":\"http://img4.imgtn.bdimg.com/it/u=2250003419,2614712631&fm=23&gp=0.jpg\"},{\"title\":\"标题2\",\"content\":\"内容2\", \"url\":\"http://d.hiphotos.baidu.com/image/h%3D360/sign=8329c3b4acc379316268802fdbc5b784/a1ec08fa513d2697a23709ef56fbb2fb4216d898.jpg\"},{\"title\":\"标题3\",\"content\":\"内容3\", \"url\":\"http://img3.imgtn.bdimg.com/it/u=2120924318,581123095&fm=21&gp=0.jpg\"},{\"title\":\"标题4\",\"content\":\"内容4\", \"url\":\"http://img2.imgtn.bdimg.com/it/u=113769873,3047962235&fm=21&gp=0.jpg\"}]";private ViewPager vp;private LinearLayout viewGroup;private List<Beans> beanList; private ImageView[] imageViews = null;private ImageView imageView;private int currentItem = 0;private ScheduledExecutorService scheduledExecutorService;private int[] img = {R.drawable.sy_guidbg_1, R.drawable.adb, R.drawable.sy_guidbg_1, R.drawable.adb};@SuppressLint("HandlerLeak")private Handler handler = new Handler() {public void handleMessage(Message msg) {vp.setCurrentItem(msg.what);// 切换当前显示的图片};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vp = (ViewPager) findViewById(R.id.vp);viewGroup = (LinearLayout) findViewById(R.id.viewGroup);//解析jsonGson gson = new Gson();beanList = gson.fromJson(json, new TypeToken<List<Beans>>(){}.getType());initVp();}private void initVp() {// TODO Auto-generated method stubviewGroup.removeAllViews();imageViews = new ImageView[beanList.size()];for (int i = 0; i < beanList.size(); i++) {imageView = new ImageView(this);LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);lp.setMargins(4, 0, 4, 0);imageView.setLayoutParams(lp);imageView.setLayoutParams(lp);imageViews[i] = imageView;if (i == 0) {imageViews[i].setBackgroundResource(R.drawable.feature_point_cur_1);} else {imageViews[i].setBackgroundResource(R.drawable.feature_point_1);}viewGroup.addView(imageViews[i]);}//装载adaptervp.setAdapter(new MyAdapter(getSupportFragmentManager()));vp.setOnPageChangeListener(new GuidePageChangeListener());}private class MyAdapter extends FragmentPagerAdapter{private FragmentManager fm;public MyAdapter(FragmentManager fm) {super(fm);// TODO Auto-generated constructor stubthis.fm = fm;}@Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubMyFragment fragment = new MyFragment();return fragment;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubMyFragment fragment = (MyFragment) fm.findFragmentByTag(String.valueOf(position));FragmentTransaction ft = fm.beginTransaction();//设置背景container.setBackgroundResource(img[position]);if (fragment != null) {ft.attach(fragment);} else {fragment = (MyFragment) getItem(position);ft.add(container.getId(), fragment, String.valueOf(position));}//传值fragment.setBeans(beanList.get(position));ft.commitAllowingStateLoss();ft = null;return fragment;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn beanList.size();}}private class ScrollTask implements Runnable {public void run() {synchronized (vp) {currentItem = (currentItem + 1) % beanList.size();handler.sendEmptyMessage(currentItem);}}}private final class GuidePageChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {for (int i = 0; i < imageViews.length; i++) {imageViews[arg0].setBackgroundResource(R.drawable.feature_point_cur_1);if (arg0 != i) {imageViews[i].setBackgroundResource(R.drawable.feature_point_1);}}}}@Overridepublic void onStart() {scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1, 2,TimeUnit.SECONDS);super.onStart();}@Overridepublic void onStop() {scheduledExecutorService.shutdown();super.onStop();}}
</pre>实体Bean</p><p>Beans.java<pre name="code" class="java">public class Beans implements Serializable {private String title;private String content;private String url;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}实现自定义布局的fragment
MyFragment.java
public class MyFragment extends Fragment {private Beans beans;private ImageView iv_pic;private TextView tv_title, tv_content;private ImageLoader imageLoader;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stub//定义ImageLoaderimageLoader = ImageLoader.getInstance();imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));View v = inflater.inflate(R.layout.fragment, null);//获取值beans = getBeans();iv_pic = (ImageView) v.findViewById(R.id.iv_pic);tv_title = (TextView) v.findViewById(R.id.tv_title);tv_content = (TextView) v.findViewById(R.id.tv_content);if(beans != null){tv_title.setText(beans.getTitle());tv_content.setText(beans.getContent());imageLoader.displayImage(beans.getUrl(), iv_pic);}return v;}public Beans getBeans() {return beans;}public void setBeans(Beans beans) {this.beans = beans;}}
布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:id="@+id/rl_vp" android:layout_width="match_parent" android:layout_height="190dp" > <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="190dp" /> <LinearLayout android:id="@+id/viewGroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/vp" android:layout_marginRight="20dp" android:layout_marginTop="-25px" android:gravity="right" android:orientation="horizontal" > </LinearLayout> </RelativeLayout></LinearLayout>布局文件fragment.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv_pic" android:layout_width="150dp" android:layout_height="150dp" android:scaleType="centerCrop" android:layout_margin="8dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:layout_toRightOf="@id/iv_pic" android:orientation="vertical" > <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="16sp" /> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" /> </LinearLayout></RelativeLayout>
如有所需下载地址:http://download.csdn.net/detail/waqdon/8302521
0 0
- 通过viewpager+fragment结合FragmentPagerAdapter实现自定义view定时轮转
- Viewpager + Fragment +FragmentPagerAdapter实现定时循环滚动效果
- ViewPager+Fragment+FragmentPagerAdapter,设置自定义刷新
- viewPager+fragment fragmentPagerAdapter
- Android:Fragment+ViewPager+FragmentPagerAdapter
- ViewPager+FragmentPagerAdapter+Fragment
- viewpager+fragment结合实现滑动
- ViewPager+RadioButton+FragmentPagerAdapter实现导航fragment生命周期分析
- TabPageIndicator + ViewPager + FragmentPagerAdapter + Fragment分析APP主框架实现
- ViewPager实现图片轮转
- ViewPager中结合使用fragmentPagerAdapter
- Fragment与Viewpager及FragmentPagerAdapter
- FragmentPagerAdapter 标准写法 fragment + viewpager
- fragment+viewpager+FragmentPagerAdapter使用随记
- ViewPager+Fragment自定义View滑动条
- ViewPager(懒加载)+Fragment+自定义View
- ActionBar和Fragment结合ViewPager实现TabActivity
- ActionBar和Fragment结合ViewPager实现TabActivity
- #define宏定义中的#,##,@#,\ 这些符号的神奇用法
- Opensymphony介绍
- numpy文件存取
- I2C总线一
- [完美解决]当前不会命中断点。还没有为该文档加载任何符号。
- 通过viewpager+fragment结合FragmentPagerAdapter实现自定义view定时轮转
- request post get
- kindeditor判断输入为空
- c++ explicit关键字详解
- XML学习笔记(二)
- Python中的yield
- AWK简明教程
- Android的Proxy/Delegate Application框架
- spring(基础七) spring事务回滚详解