编写轮播图Viewpager
一:在所有工作开始前,我们先准备好布局和资源:两张不同状态的按钮,四张图片
(在布局中需要注意几点:想要radiogroup放在Viewpager下面的话,需要用到
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.com.wechart.Activity.MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main_relativelayout" > </android.support.v4.view.ViewPager> <RadioGroup android:layout_centerInParent="true" android:gravity="center" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="20dp" android:padding="6dp" android:orientation="horizontal" android:background="#d4d1d1" android:id="@+id/main_radiogroup" > </RadioGroup> </RelativeLayout> </RelativeLayout>
图片资源我就不给了
当然还需要一个为radiobutton背景准备的xml文件
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/btn_img_two" /> <item android:drawable="@drawable/btn_img_one" /> </selector>
二,现在准备工作都准备好了,我们开始其他的,轮播图,还需要一个activity和一个adapter
首先是aticvity:
package com.example.com.wechart.Activity; import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; import com.example.com.wechart.Activity.Adpater.ViewPagerAdapter; import com.example.com.wechart.R; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { private ViewPager viewPager; private RadioGroup radioGroup; private List<View> imageview_list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); int[] ids={ R.drawable.inter, R.drawable.learning, R.drawable.major, R.drawable.message }; for (int i=0;i<ids.length;i++) { ImageView imageview=new ImageView(this); imageview.setScaleType(ImageView.ScaleType.CENTER); imageview.setImageBitmap(BitmapFactory.decodeResource(getResources(),ids[i])); imageview_list.add(imageview); RadioButton button=new RadioButton(this); button.setButtonDrawable(R.drawable.button_values); radioGroup.addView(button); } viewPager.addOnPageChangeListener(this); viewPager.setAdapter(new ViewPagerAdapter(imageview_list)); radioGroup.check(0); handle.sendEmptyMessageDelayed(1,3000); } //通过id寻找到控件 private void init() { viewPager= (ViewPager) findViewById(R.id.main_relativelayout); radioGroup= (RadioGroup) findViewById(R.id.main_radiogroup); } // @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { radioGroup.clearCheck(); radioGroup.check(position-1); } @Override public void onPageScrollStateChanged(int state) { }
Handler handle=new Handler() { private int Index; @Override public void handleMessage(Message msg) { super.handleMessage(msg); handle.sendEmptyMessageDelayed(1,3000); if (Index<imageview_list.size()-1) { Index++; } else { Index=0; } viewPager.setCurrentItem(Index); } }; }
然后是adapter:
package com.example.com.wechart.Activity.Adpater; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import java.util.List; /** * Created by 12697 on 2017/3/11. */ public class ViewPagerAdapter extends PagerAdapter { private List<View> imageview_list; public ViewPagerAdapter(List<View> imageview_list) { this.imageview_list=imageview_list; } @Override public int getCount() { return imageview_list==null?0:imageview_list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { View view=imageview_list.get(position); container.addView(view,0); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view=imageview_list.get(position); container.removeView(view); } }
以后写Viewpager时一定要记住,必须重写destroyitem;特别是在与fragment这些一起连用的时候,否则,容易出现卡顿等现象
ok,基本上一个轮播图就这样写完了,有兴趣的可以去学习一下无限轮播,或者自定义轮播图以及radiogroup的一些算法机制
编写轮播图Viewpager相关推荐
- 基于JQuery 编写轮播图插件
基于JQuery 编写轮播图插件 不管是实际开发还是平时的小项目中 ,页面一定有且多个的轮播图,那么为了效率大家可以考虑封装这样的小插件.下面一起看看他的使用方法吧 使用需要准备(往下滑动会看到): ...
- 用Android studio写一个轮播图代码
好的,下面是一个使用Android Studio编写轮播图的示例代码: 首先,在你的布局文件中添加一个ViewPager和一个指示器(例如使用ViewPagerIndicator库),用于显示轮播图和 ...
- 基于skitter的轮播图炫酷效果,幻灯片的体验
概述 包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端 详细 代码下载:http://www.demodashi.com/demo/11939.html 你还在用原生的js ...
- ionic组件-Slides轮播图
Slides轮播图组件 ionic中的轮播图组件是基于swiper插件,所以配置slides的属性需要在swiper的API中找: Swiper触摸滑动插件:https://www.swiper.co ...
- android轮播图简单实现(左右无限滑动,自动轮播)
直接上代码了,都有注释,原理很简单 public class MainActivity extends AppCompatActivity { private static final String ...
- 轮播图功能的全实现(自动播放、小点点、按住停止播放、放手后开始播放...)
MainActivity /*** 1.实现了轮播图自动滚动效果<br>* 2.设置了跟随页面变化的小点点<br>* 3.解决了轮播图手指滑动后,显示页面错位的问题<br ...
- 史上最简单的无缝衔接轮播图
网上有大量关于使用原生js编写轮播图的例子,不得不说,他们的文章很棒,但是我发现一个缺点,就是他们的轮播图组件太过于完整,添加了很多按钮功能,代码量较大.掩盖了轮播图的最基本也是最重要的实现原理,很容 ...
- 仿百度壁纸客户端(二)——主页自定义ViewPager广告定时轮播图
仿百度壁纸客户端(二)--主页自定义ViewPager广告定时轮播图 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...
- java轮播图_RxJava 实现ViewPager的轮播图
前言 在App中实现一个轮播图已经是很多产品的标配了,很多人都会想到使用ViewPager + Handler来完成轮播图的效果.但是在RxJava快速发展的情况下,已经可以使用RxJava来代替Ha ...
最新文章
- QQ音乐的各种相关API
- 饼图大小调整_Excel做的双层饼图,太漂亮了
- 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk
- 在python中,用正则表达式提取多层括号中最外层括号包含的内容
- Azure 内容审查器之羞羞图审查
- css中会计算的属性,2017年12月聚合文章--calc() ---一个会计算的css属性 | 码友网
- 【渝粤教育】国家开放大学2018年春季 8634-22TAndroid智能手机编程 参考试题
- css除法,CSS_关系数据库 除法,假设有两个关系,R(a,b,c)和T(b,c - phpStudy
- 【前端】【cornerstionjs】Cornerstone加载base64表示的jpg图像
- 完善的IaaS云服务的个人理解
- 小莫qq影视机器人-自定义对接影视教程
- 【转】VS2013 产品密钥 – 所有版本
- pandas的apply中的x到底是什么
- R语言构建logistic回归模型:模型系数(model coefficient)、模型总结信息(summary)、模型评估(偏差deviance计算、伪R方计算( pseudo R-squared)
- Typescript泛型与implements子句
- maven 国内可用的中央仓库 阿里云
- 【打字母游戏_C语言实现】
- 公有链规模可扩展性的讨论 PPT
- 前端学习笔记-4.2php实现注册功能
- [JZOJ3809]设备塔