布局文件

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent" >
  4.  
  5. <FrameLayout
  6. android:layout_width="match_parent"
  7. android:layout_height="300dip" >
  8.  
  9. <android.support.v4.view.ViewPager
  10. android:id="@+id/vp"
  11. android:layout_width="match_parent"
  12. android:layout_height="match_parent" />
  13.  
  14. <LinearLayout
  15. android:layout_width="match_parent"
  16. android:layout_height="35dip"
  17. android:layout_gravity="bottom"
  18. android:background="#33000000"
  19. android:gravity="center"
  20. android:orientation="vertical" >
  21.  
  22. <TextView
  23. android:id="@+id/title"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:text="图片标题"
  27. android:textColor="@android:color/white" />
  28.  
  29. <LinearLayout
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:layout_marginTop="3dip"
  33. android:orientation="horizontal" >
  34.  
  35. <View
  36. android:id="@+id/dot_0"
  37. android:layout_width="5dip"
  38. android:layout_height="5dip"
  39. android:layout_marginLeft="2dip"
  40. android:layout_marginRight="2dip"
  41. android:background="@drawable/dot_yes"/>
  42.  
  43. <View
  44. android:id="@+id/dot_1"
  45. android:layout_width="5dip"
  46. android:layout_height="5dip"
  47. android:layout_marginLeft="2dip"
  48. android:layout_marginRight="2dip"
  49. android:background="@drawable/dot_no"/>
  50. <View
  51. android:id="@+id/dot_2"
  52. android:layout_width="5dip"
  53. android:layout_height="5dip"
  54. android:layout_marginLeft="2dip"
  55. android:layout_marginRight="2dip"
  56. android:background="@drawable/dot_no"/>
  57. <View
  58. android:id="@+id/dot_3"
  59. android:layout_width="5dip"
  60. android:layout_height="5dip"
  61. android:layout_marginLeft="2dip"
  62. android:layout_marginRight="2dip"
  63. android:background="@drawable/dot_no"/>
  64. <View
  65. android:id="@+id/dot_4"
  66. android:layout_width="5dip"
  67. android:layout_height="5dip"
  68. android:layout_marginLeft="2dip"
  69. android:layout_marginRight="2dip"
  70. android:background="@drawable/dot_no"/>
  71.  
  72. </LinearLayout>
  73. </LinearLayout>
  74. </FrameLayout>
  75.  
  76. </RelativeLayout>

在一个fragment中使用

  1. package com.example.administrator.yunphone.View;
  2.  
  3. import android.app.Fragment;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.support.annotation.Nullable;
  7. import android.support.v4.view.PagerAdapter;
  8. import android.support.v4.view.ViewPager;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.ImageView;
  13. import android.widget.TextView;
  14.  
  15. import com.example.administrator.yunphone.R;
  16.  
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.concurrent.Executors;
  20. import java.util.concurrent.ScheduledExecutorService;
  21. import java.util.concurrent.TimeUnit;
  22.  
  23. /**
  24. * Created by Administrator on 2016/7/13.
  25. */
  26. public class HomeFragment extends Fragment {
  27.  
  28. private View mView;
  29. private ViewPager mViewPaper;
  30. private List<ImageView> images;
  31. private List<View> dots;
  32. private int currentItem;
  33. //记录上一次点的位置
  34. private int oldPosition = 0;
  35. //存放图片的id
  36. private int[] imageIds = new int[]{
  37. R.drawable.home_bg,
  38. R.drawable.home_bg,
  39. R.drawable.home_bg,
  40. R.drawable.home_bg,
  41. R.drawable.home_bg
  42. };
  43. //存放图片的标题
  44. private String[] titles = new String[]{
  45. "轮播1",
  46. "轮播2",
  47. "轮播3",
  48. "轮播4",
  49. "轮播5"
  50. };
  51. private TextView title;
  52. private ViewPagerAdapter adapter;
  53. private ScheduledExecutorService scheduledExecutorService;
  54.  
  55. @Nullable
  56. @Override
  57. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  58.  
  59. mView=inflater.inflate(R.layout.fragment_home_layout, null);
  60. setView();
  61. return mView;
  62. }
  63. private void setView(){
  64. mViewPaper = (ViewPager)mView.findViewById(R.id.vp);
  65.  
  66. //显示的图片
  67. images = new ArrayList<ImageView>();
  68. for(int i = 0; i < imageIds.length; i++){
  69. ImageView imageView = new ImageView(getActivity());
  70. imageView.setBackgroundResource(imageIds[i]);
  71. images.add(imageView);
  72. }
  73. //显示的小点
  74. dots = new ArrayList<View>();
  75. dots.add(mView.findViewById(R.id.dot_0));
  76. dots.add(mView.findViewById(R.id.dot_1));
  77. dots.add(mView.findViewById(R.id.dot_2));
  78. dots.add(mView.findViewById(R.id.dot_3));
  79. dots.add(mView.findViewById(R.id.dot_4));
  80.  
  81. title = (TextView) mView.findViewById(R.id.title);
  82. title.setText(titles[0]);
  83.  
  84. adapter = new ViewPagerAdapter();
  85. mViewPaper.setAdapter(adapter);
  86.  
  87. mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
  88.  
  89. @Override
  90. public void onPageSelected(int position) {
  91. title.setText(titles[position]);
  92. dots.get(position).setBackgroundResource(R.drawable.dot_yes);
  93. dots.get(oldPosition).setBackgroundResource(R.drawable.dot_no);
  94.  
  95. oldPosition = position;
  96. currentItem = position;
  97. }
  98.  
  99. @Override
  100. public void onPageScrolled(int arg0, float arg1, int arg2) {
  101.  
  102. }
  103.  
  104. @Override
  105. public void onPageScrollStateChanged(int arg0) {
  106.  
  107. }
  108. });
  109. }
  110.  
  111. /*定义的适配器*/
  112. public class ViewPagerAdapter extends PagerAdapter{
  113.  
  114. @Override
  115. public int getCount() {
  116. return images.size();
  117. }
  118.  
  119. @Override
  120. public boolean isViewFromObject(View arg0, Object arg1) {
  121. return arg0 == arg1;
  122. }
  123.  
  124. @Override
  125. public void destroyItem(ViewGroup view, int position, Object object) {
  126. // TODO Auto-generated method stub
  127. // super.destroyItem(container, position, object);
  128. // view.removeView(view.getChildAt(position));
  129. // view.removeViewAt(position);
  130. view.removeView(images.get(position));
  131. }
  132.  
  133. @Override
  134. public Object instantiateItem(ViewGroup view, int position) {
  135. // TODO Auto-generated method stub
  136. view.addView(images.get(position));
  137. return images.get(position);
  138. }
  139.  
  140. }
  141.  
  142. /**
  143. * 利用线程池定时执行动画轮播
  144. */
  145. @Override
  146. public void onStart() {
  147. // TODO Auto-generated method stub
  148. super.onStart();
  149. scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
  150. scheduledExecutorService.scheduleWithFixedDelay(
  151. new ViewPageTask(),
  152. 2,
  153. 2,
  154. TimeUnit.SECONDS);
  155. }
  156.  
  157. /**
  158. * 图片轮播任务
  159. * @author liuyazhuang
  160. *
  161. */
  162. private class ViewPageTask implements Runnable{
  163.  
  164. @Override
  165. public void run() {
  166. currentItem = (currentItem + 1) % imageIds.length;
  167. mHandler.sendEmptyMessage(0);
  168. }
  169. }
  170.  
  171. /**
  172. * 接收子线程传递过来的数据
  173. */
  174. private Handler mHandler = new Handler(){
  175. public void handleMessage(android.os.Message msg) {
  176. mViewPaper.setCurrentItem(currentItem);
  177. };
  178. };
  179. @Override
  180. public void onStop() {
  181. // TODO Auto-generated method stub
  182. super.onStop();
  183. if(scheduledExecutorService != null){
  184. scheduledExecutorService.shutdown();
  185. scheduledExecutorService = null;
  186. }
  187. }
  188. }

Android 图片轮播(最简单的)的更多相关文章

  1. 一起写一个Android图片轮播控件

    注:本文提到的Android轮播控件Demo地址: Android图片轮播控件 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用 ...

  2. Android图片轮播控件

    Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间.位置.图片加载框架等! 使用步骤 Step 1.依赖banner Gradle dependenci ...

  3. Android——图片轮播

    Android技术——轮播功能 轮播需要什么? 答:实现图片与广告语展示.循环播发以及手动切换.支持加载本地与网络图片. 性能优化? 答:多张图片与指示器展示.自动与定时.循环播发.滑动流畅并且无卡顿 ...

  4. 【Android】android图片轮播

    第一步,先写一个布局文件 <com.main.util.SlideShowView android:id="@+id/slideshowView" android:layou ...

  5. Android 开发最牛的图片轮播控件,基本什么都包含了。

    Android图片轮播控件  源码下载地址: Android 图片轮播 现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能.因为ViewPager并不支持循环翻页, ...

  6. Android开发(九)——ViewFlipper实现图片轮播

    图片轮播的实现方法有很多,主要有View.ViewFilpper.ViewFilpper系统自带的一个多页面管理控件,它可以实现子界面的自动切换. 首先 需要为ViewFlipper加入View (1 ...

  7. Android学习笔记之图片轮播...

    PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...

  8. Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)

    前言:github对开发者而言无疑是个宝藏,但想利用它可不是件简单的事,用Android studio导入开源项目会遇到各种问题,今天我就以github上的一个图片轮播项目为例,解决导入过程中的常见问 ...

  9. Android中使用开源框架android-image-indicator实现图片轮播部署

    之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页 ...

随机推荐

  1. poj 3895(求无向图的最大简单环)

    题目链接:http://poj.org/problem?id=3895 思想很简单,就是dfs,并且用一个数组记录到该节点所走过的长度,然后如果遇到已经走过的,就说明存在环了, 更新一下ans. /* ...

  2. Linux学习笔记(21) Linux日志管理

    1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...

  3. C# 溢出检查

    checked: byte b = 255; checked { b++; } Console.WriteLine(b.ToString()); 执行出错:算术运算导致溢出. unchecked: b ...

  4. Swift3.0语言教程分割字符串与截取字符串

    Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...

  5. 我的c++学习(5)switch语句详解

    #include "stdafx.h" #include<iostream> using namespace std; #include<iomanip> ...

  6. 封装原生Ajax

    var Chef = { createAjax:function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject("m ...

  7. https://www.nginx.com/blog/introduction-to-microservices/

    https://www.nginx.com/blog/introduction-to-microservices/

  8. DP(记忆化搜索) + AC自动机 LA 4126 Password Suspects

    题目传送门 题意:训练指南P250 分析:DFS记忆化搜索,范围或者说是图是已知的字串构成的自动机图,那么用 | (1 << i)表示包含第i个字串,如果长度为len,且st == (1 ...

  9. Android获取APK包名的几种方法

    Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...

  10. CF#335 Sorting Railway Cars

    Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...