一:在所有工作开始前,我们先准备好布局和资源:两张不同状态的按钮,四张图片

(在布局中需要注意几点:想要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相关推荐

  1. 基于JQuery 编写轮播图插件

    基于JQuery 编写轮播图插件 不管是实际开发还是平时的小项目中 ,页面一定有且多个的轮播图,那么为了效率大家可以考虑封装这样的小插件.下面一起看看他的使用方法吧 使用需要准备(往下滑动会看到): ...

  2. 用Android studio写一个轮播图代码

    好的,下面是一个使用Android Studio编写轮播图的示例代码: 首先,在你的布局文件中添加一个ViewPager和一个指示器(例如使用ViewPagerIndicator库),用于显示轮播图和 ...

  3. 基于skitter的轮播图炫酷效果,幻灯片的体验

    概述 包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端 详细 代码下载:http://www.demodashi.com/demo/11939.html 你还在用原生的js ...

  4. ionic组件-Slides轮播图

    Slides轮播图组件 ionic中的轮播图组件是基于swiper插件,所以配置slides的属性需要在swiper的API中找: Swiper触摸滑动插件:https://www.swiper.co ...

  5. android轮播图简单实现(左右无限滑动,自动轮播)

    直接上代码了,都有注释,原理很简单 public class MainActivity extends AppCompatActivity { private static final String ...

  6. 轮播图功能的全实现(自动播放、小点点、按住停止播放、放手后开始播放...)

    MainActivity /*** 1.实现了轮播图自动滚动效果<br>* 2.设置了跟随页面变化的小点点<br>* 3.解决了轮播图手指滑动后,显示页面错位的问题<br ...

  7. 史上最简单的无缝衔接轮播图

    网上有大量关于使用原生js编写轮播图的例子,不得不说,他们的文章很棒,但是我发现一个缺点,就是他们的轮播图组件太过于完整,添加了很多按钮功能,代码量较大.掩盖了轮播图的最基本也是最重要的实现原理,很容 ...

  8. 仿百度壁纸客户端(二)——主页自定义ViewPager广告定时轮播图

    仿百度壁纸客户端(二)--主页自定义ViewPager广告定时轮播图 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  9. java轮播图_RxJava 实现ViewPager的轮播图

    前言 在App中实现一个轮播图已经是很多产品的标配了,很多人都会想到使用ViewPager + Handler来完成轮播图的效果.但是在RxJava快速发展的情况下,已经可以使用RxJava来代替Ha ...

最新文章

  1. QQ音乐的各种相关API
  2. 饼图大小调整_Excel做的双层饼图,太漂亮了
  3. 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk
  4. 在python中,用正则表达式提取多层括号中最外层括号包含的内容
  5. Azure 内容审查器之羞羞图审查
  6. css中会计算的属性,2017年12月聚合文章--calc() ---一个会计算的css属性 | 码友网
  7. 【渝粤教育】国家开放大学2018年春季 8634-22TAndroid智能手机编程 参考试题
  8. css除法,CSS_关系数据库 除法,假设有两个关系,R(a,b,c)和T(b,c - phpStudy
  9. 【前端】【cornerstionjs】Cornerstone加载base64表示的jpg图像
  10. 完善的IaaS云服务的个人理解
  11. 小莫qq影视机器人-自定义对接影视教程
  12. 【转】VS2013 产品密钥 – 所有版本
  13. pandas的apply中的x到底是什么
  14. R语言构建logistic回归模型:模型系数(model coefficient)、模型总结信息(summary)、模型评估(偏差deviance计算、伪R方计算( pseudo R-squared)
  15. Typescript泛型与implements子句
  16. maven 国内可用的中央仓库 阿里云
  17. 【打字母游戏_C语言实现】
  18. 公有链规模可扩展性的讨论 PPT
  19. 前端学习笔记-4.2php实现注册功能
  20. [JZOJ3809]设备塔

热门文章

  1. 蓝桥杯C/C++省赛:振兴中华
  2. ThinkPHP实现数据的创建
  3. python实现人脸口罩检测(基于opencv和深度学习两种方法)
  4. 刘海屏下悬浮球的位置计算
  5. 创新谈-数据库概念设计之几点见解-吴雨光
  6. 电脑图标变大了怎么办?
  7. 第六次热身赛---坤坤的操作数
  8. 物理像素、CSS像素、dip、dpr、ppi、dpi
  9. 编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。
  10. 2020-04-14