Android 带圆点的自动轮播
来源:互联网 发布:ant 构建java web项目 编辑:程序博客网 时间:2024/05/16 15:59
要实现这个功能很简单,首先,循环创建和图片一样数量的圆点,判断设置第一个圆点为白色其他的为透明的,
[java] view plain copy
- for(int i = 0;i<li.size();i++){
- ImageView iv = new ImageView(MainActivity.this);
- //循环创建小圆点,判断第一个小圆点为白色的,其他的都是透明的
- if(i == 0){
- iv.setBackgroundResource(R.drawable.circle_white);
- }else{
- iv.setBackgroundResource(R.drawable.circle_transparent);
- }
- main_lin.addView(iv);
- //设置小圆点的margin值
- LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
- lp.setMargins(5, 10, 5, 10);
- iv.setLayoutParams(lp);
- }
设置gallery滚动时候切换小圆点
[java] view plain copy
- //设置滚动图片的时候,对应小圆点的图片切换
- main_gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id) {
- View v = main_lin.getChildAt(position);
- View cuview = main_lin.getChildAt(current_circle);
- if(v != null && cuview != null){
- ImageView pointView = (ImageView) v;
- ImageView curpointView = (ImageView) cuview;
- curpointView
- .setBackgroundResource(R.drawable.circle_transparent);
- pointView
- .setBackgroundResource(R.drawable.circle_white);
- current_circle = position;
- }
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
设置定时器自动播放图片
[java] view plain copy
- //设置轮播定时器
- timeadv = new Runnable() {
- @Override
- public void run() {
- //获取当前的图片是哪一张图片,图片的序号,
- count = main_gallery.getSelectedItemPosition();
- //当前滚动的图片序号大于多有的图片的数量,就跳转到第一张图片,否则就跳转到下一张图片
- if(count+1>=li.size()){
- count = 0;
- }else{
- count = count+1;
- }
- main_gallery.setSelection(count);
- handler.postDelayed(this, 1000);
- }
- };
开启定时器
[java] view plain copy
- //开启定时器,1000毫秒切换一次图片
- handler.postDelayed(timeadv, 1000);
关闭activity时,关闭定时器
[java] view plain copy
- @Override
- public void onDestroy() {
- //关闭activity时,关闭定时器
- if(handler != null){
- //判断定时器时候为null,!null就销毁
- if(timeadv != null){
- handler.removeCallbacks(timeadv);
- }
- }
- super.onDestroy();
- }
所有的源码:
xml文件
[html] view plain copy
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal" >
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="200dp" >
- <Gallery
- android:id="@+id/main_gallery"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <LinearLayout
- android:id="@+id/main_lin"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="5dp"
- android:gravity="center_horizontal"
- android:orientation="horizontal" >
- </LinearLayout>
- </RelativeLayout>
- </LinearLayout>
item文件
[html] view plain copy
- <?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" >
- <ImageView
- android:id="@+id/gallery_iv"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="fitXY"
- />
- </LinearLayout>
activity文件
[java] view plain copy
- import java.util.ArrayList;
- import java.util.List;
- import android.os.Bundle;
- import android.os.Handler;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.Gallery;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.app.Activity;
- public class MainActivity extends Activity {
- Gallery main_gallery;
- LinearLayout main_lin;
- List<Object> li;
- Integer[] res = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e};
- Gallery_adapter gallery_adapter;
- int current_circle = 0;
- Runnable timeadv;
- int count;
- Handler handler = new Handler();
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initview();
- li = new ArrayList<Object>();
- for(int i = 0;i<res.length;i++){
- li.add(res[i]);
- }
- gallery_adapter = new Gallery_adapter(this);
- main_gallery.setAdapter(gallery_adapter);
- gallery_adapter.setList(li);
- setCircle();
- //设置滚动图片的时候,对应小圆点的图片切换
- main_gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int position, long id) {
- View v = main_lin.getChildAt(position);
- View cuview = main_lin.getChildAt(current_circle);
- if(v != null && cuview != null){
- ImageView pointView = (ImageView) v;
- ImageView curpointView = (ImageView) cuview;
- curpointView
- .setBackgroundResource(R.drawable.circle_transparent);
- pointView
- .setBackgroundResource(R.drawable.circle_white);
- current_circle = position;
- }
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- //设置轮播定时器
- timeadv = new Runnable() {
- @Override
- public void run() {
- //获取当前的图片是哪一张图片,图片的序号,
- count = main_gallery.getSelectedItemPosition();
- //当前滚动的图片序号大于多有的图片的数量,就跳转到第一张图片,否则就跳转到下一张图片
- if(count+1>=li.size()){
- count = 0;
- }else{
- count = count+1;
- }
- main_gallery.setSelection(count);
- handler.postDelayed(this, 1000);
- }
- };
- //开启定时器,1000毫秒切换一次图片
- handler.postDelayed(timeadv, 1000);
- }
- private void initview() {
- main_gallery = (Gallery) this.findViewById(R.id.main_gallery);
- main_lin = (LinearLayout) this.findViewById(R.id.main_lin);
- }
- //设置滚动图片的小圆点
- private void setCircle() {
- for(int i = 0;i<li.size();i++){
- ImageView iv = new ImageView(MainActivity.this);
- //循环创建小圆点,判断第一个小圆点为白色的,其他的都是透明的
- if(i == 0){
- iv.setBackgroundResource(R.drawable.circle_white);
- }else{
- iv.setBackgroundResource(R.drawable.circle_transparent);
- }
- main_lin.addView(iv);
- //设置小圆点的margin值
- LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
- lp.setMargins(5, 10, 5, 10);
- iv.setLayoutParams(lp);
- }
- }
- @Override
- public void onDestroy() {
- //关闭activity时,关闭定时器
- if(handler != null){
- //判断定时器时候为null,!null就销毁
- if(timeadv != null){
- handler.removeCallbacks(timeadv);
- }
- }
- super.onDestroy();
- }
- }
adapter文件
[java] view plain copy
- import java.util.ArrayList;
- import java.util.List;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.ImageView;
- public class Gallery_adapter extends BaseAdapter {
- Context context;
- List<Object> list;
- public Gallery_adapter(Context context) {
- this.context = context;
- list = new ArrayList<Object>();
- }
- public void setList(List<Object> list) {
- this.list = list;
- this.notifyDataSetChanged();
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return list.size();
- }
- @Override
- public Object getItem(int arg0) {
- // TODO Auto-generated method stub
- return list.get(arg0);
- }
- @Override
- public long getItemId(int arg0) {
- // TODO Auto-generated method stub
- return arg0;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder = null;
- if(convertView == null || convertView.getTag() == null){
- convertView = LayoutInflater.from(context).inflate(R.layout.gallery_item, parent,false);
- viewHolder = new ViewHolder();
- viewHolder.gallery_iv = (ImageView) convertView.findViewById(R.id.gallery_iv);
- convertView.setTag(viewHolder);
- }else{
- viewHolder = (ViewHolder) convertView.getTag();
- }
- viewHolder.gallery_iv.setImageResource(Integer.parseInt(list.get(position).toString()));
- return convertView;
- }
- class ViewHolder{
- ImageView gallery_iv;
- }
- }
源码下载
0 0
- Android 带圆点的自动轮播
- Android 带圆点的自动轮播
- Android 自动轮播的Viewpager
- android之自动轮播的ViewPager
- Android 图片自动轮播
- 自动轮播的viewpager
- ViewPager的自动轮播
- 自动轮播的Viewpager
- 图片的自动轮播
- BannerImageLoader的自动轮播
- 图片的自动轮播
- Android中的ViewFlipper的简单使用------自动轮播
- 史上最简单的android图片自动轮播
- Android 实现带指示器的自动轮播式ViewPager
- Android 实现带指示器的自动轮播式ViewPager
- Android-自动轮播的ViewPager+滑动指示器
- Android 自动轮播图 bnner的实现原理~
- Android实现ViewPager自动轮播
- 相见恨晚,真的很喜欢Udacity
- 关于RGB屏调试的一些知识
- 点击dialog上部红色方框区域 dilaog不消失 点击其实区域消失
- activity 全屏界面切换到非全屏界面的问题
- 浏览器命令行交互下js的执行过程
- Android 带圆点的自动轮播
- no cortex-m sw device found 问题解决
- 29.Java日期格式到数据库
- vnc 安装和配置 ubuntu环境和centos环境
- request.getRequestDispatcher().forward(request.response)
- Makefile 工程管理器
- canvas 修改光标形状 滑过事件 点击事件
- 微信支付 v3版 java
- 魅族手机HOLD的解决方案