Android 图片轮播(最简单的)
布局文件
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="300dip" >
- <android.support.v4.view.ViewPager
- android:id="@+id/vp"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="35dip"
- android:layout_gravity="bottom"
- android:background="#33000000"
- android:gravity="center"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="图片标题"
- android:textColor="@android:color/white" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="3dip"
- android:orientation="horizontal" >
- <View
- android:id="@+id/dot_0"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_yes"/>
- <View
- android:id="@+id/dot_1"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_2"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_3"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- <View
- android:id="@+id/dot_4"
- android:layout_width="5dip"
- android:layout_height="5dip"
- android:layout_marginLeft="2dip"
- android:layout_marginRight="2dip"
- android:background="@drawable/dot_no"/>
- </LinearLayout>
- </LinearLayout>
- </FrameLayout>
- </RelativeLayout>
在一个fragment中使用
- package com.example.administrator.yunphone.View;
- import android.app.Fragment;
- import android.os.Bundle;
- import android.os.Handler;
- import android.support.annotation.Nullable;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ImageView;
- import android.widget.TextView;
- import com.example.administrator.yunphone.R;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.Executors;
- import java.util.concurrent.ScheduledExecutorService;
- import java.util.concurrent.TimeUnit;
- /**
- * Created by Administrator on 2016/7/13.
- */
- public class HomeFragment extends Fragment {
- private View mView;
- private ViewPager mViewPaper;
- private List<ImageView> images;
- private List<View> dots;
- private int currentItem;
- //记录上一次点的位置
- private int oldPosition = 0;
- //存放图片的id
- private int[] imageIds = new int[]{
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg,
- R.drawable.home_bg
- };
- //存放图片的标题
- private String[] titles = new String[]{
- "轮播1",
- "轮播2",
- "轮播3",
- "轮播4",
- "轮播5"
- };
- private TextView title;
- private ViewPagerAdapter adapter;
- private ScheduledExecutorService scheduledExecutorService;
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- mView=inflater.inflate(R.layout.fragment_home_layout, null);
- setView();
- return mView;
- }
- private void setView(){
- mViewPaper = (ViewPager)mView.findViewById(R.id.vp);
- //显示的图片
- images = new ArrayList<ImageView>();
- for(int i = 0; i < imageIds.length; i++){
- ImageView imageView = new ImageView(getActivity());
- imageView.setBackgroundResource(imageIds[i]);
- images.add(imageView);
- }
- //显示的小点
- dots = new ArrayList<View>();
- dots.add(mView.findViewById(R.id.dot_0));
- dots.add(mView.findViewById(R.id.dot_1));
- dots.add(mView.findViewById(R.id.dot_2));
- dots.add(mView.findViewById(R.id.dot_3));
- dots.add(mView.findViewById(R.id.dot_4));
- title = (TextView) mView.findViewById(R.id.title);
- title.setText(titles[0]);
- adapter = new ViewPagerAdapter();
- mViewPaper.setAdapter(adapter);
- mViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
- @Override
- public void onPageSelected(int position) {
- title.setText(titles[position]);
- dots.get(position).setBackgroundResource(R.drawable.dot_yes);
- dots.get(oldPosition).setBackgroundResource(R.drawable.dot_no);
- oldPosition = position;
- currentItem = position;
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- }
- });
- }
- /*定义的适配器*/
- public class ViewPagerAdapter extends PagerAdapter{
- @Override
- public int getCount() {
- return images.size();
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
- @Override
- public void destroyItem(ViewGroup view, int position, Object object) {
- // TODO Auto-generated method stub
- // super.destroyItem(container, position, object);
- // view.removeView(view.getChildAt(position));
- // view.removeViewAt(position);
- view.removeView(images.get(position));
- }
- @Override
- public Object instantiateItem(ViewGroup view, int position) {
- // TODO Auto-generated method stub
- view.addView(images.get(position));
- return images.get(position);
- }
- }
- /**
- * 利用线程池定时执行动画轮播
- */
- @Override
- public void onStart() {
- // TODO Auto-generated method stub
- super.onStart();
- scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
- scheduledExecutorService.scheduleWithFixedDelay(
- new ViewPageTask(),
- 2,
- 2,
- TimeUnit.SECONDS);
- }
- /**
- * 图片轮播任务
- * @author liuyazhuang
- *
- */
- private class ViewPageTask implements Runnable{
- @Override
- public void run() {
- currentItem = (currentItem + 1) % imageIds.length;
- mHandler.sendEmptyMessage(0);
- }
- }
- /**
- * 接收子线程传递过来的数据
- */
- private Handler mHandler = new Handler(){
- public void handleMessage(android.os.Message msg) {
- mViewPaper.setCurrentItem(currentItem);
- };
- };
- @Override
- public void onStop() {
- // TODO Auto-generated method stub
- super.onStop();
- if(scheduledExecutorService != null){
- scheduledExecutorService.shutdown();
- scheduledExecutorService = null;
- }
- }
- }
Android 图片轮播(最简单的)的更多相关文章
- 一起写一个Android图片轮播控件
注:本文提到的Android轮播控件Demo地址: Android图片轮播控件 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用 ...
- Android图片轮播控件
Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间.位置.图片加载框架等! 使用步骤 Step 1.依赖banner Gradle dependenci ...
- Android——图片轮播
Android技术——轮播功能 轮播需要什么? 答:实现图片与广告语展示.循环播发以及手动切换.支持加载本地与网络图片. 性能优化? 答:多张图片与指示器展示.自动与定时.循环播发.滑动流畅并且无卡顿 ...
- 【Android】android图片轮播
第一步,先写一个布局文件 <com.main.util.SlideShowView android:id="@+id/slideshowView" android:layou ...
- Android 开发最牛的图片轮播控件,基本什么都包含了。
Android图片轮播控件 源码下载地址: Android 图片轮播 现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能.因为ViewPager并不支持循环翻页, ...
- Android开发(九)——ViewFlipper实现图片轮播
图片轮播的实现方法有很多,主要有View.ViewFilpper.ViewFilpper系统自带的一个多页面管理控件,它可以实现子界面的自动切换. 首先 需要为ViewFlipper加入View (1 ...
- Android学习笔记之图片轮播...
PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...
- Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)
前言:github对开发者而言无疑是个宝藏,但想利用它可不是件简单的事,用Android studio导入开源项目会遇到各种问题,今天我就以github上的一个图片轮播项目为例,解决导入过程中的常见问 ...
- Android中使用开源框架android-image-indicator实现图片轮播部署
之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页 ...
随机推荐
- poj 3895(求无向图的最大简单环)
题目链接:http://poj.org/problem?id=3895 思想很简单,就是dfs,并且用一个数组记录到该节点所走过的长度,然后如果遇到已经走过的,就说明存在环了, 更新一下ans. /* ...
- Linux学习笔记(21) Linux日志管理
1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式 ...
- C# 溢出检查
checked: byte b = 255; checked { b++; } Console.WriteLine(b.ToString()); 执行出错:算术运算导致溢出. unchecked: b ...
- Swift3.0语言教程分割字符串与截取字符串
Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...
- 我的c++学习(5)switch语句详解
#include "stdafx.h" #include<iostream> using namespace std; #include<iomanip> ...
- 封装原生Ajax
var Chef = { createAjax:function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject("m ...
- https://www.nginx.com/blog/introduction-to-microservices/
https://www.nginx.com/blog/introduction-to-microservices/
- DP(记忆化搜索) + AC自动机 LA 4126 Password Suspects
题目传送门 题意:训练指南P250 分析:DFS记忆化搜索,范围或者说是图是已知的字串构成的自动机图,那么用 | (1 << i)表示包含第i个字串,如果长度为len,且st == (1 ...
- Android获取APK包名的几种方法
Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...
- CF#335 Sorting Railway Cars
Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...