版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在Android中实现一个首页无限轮播功能
这期内容当中在下将会给大家带来有关怎么在Android中实现一个首页无限轮播功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。多张轮播图定时效果指示点以及每张图片的文字说明实现无限轮播,可滑动,图片点击事件开始布局:<RelativeLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yangziling.carousel.MainActivity">
<!--轮播图-->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<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:background="@drawable/dot_focused"/>
<View
android:id="@+id/dot_1"
android:background="@drawable/dot_normal"/>
<View
android:id="@+id/dot_2"
android:background="@drawable/dot_normal"/>
<View
android:id="@+id/dot_3"
android:background="@drawable/dot_normal"/>
<View
android:id="@+id/dot_4"
android:background="@drawable/dot_normal"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
</RelativeLayout>布局中抽取的view属性:<style
name="view_attr">
<item
name="android:layout_width">5dp</item>
<item
name="android:layout_height">5dp</item>
<item
name="android:layout_marginLeft">5dp</item>
<item
name="android:layout_marginRight">5dp</item>
</style>这里我展示的一些图片是在本地的,通过网络框架加载图片原理也是一样的。这里直接给大家贴出来核心代码:public
class
MainActivity
extends
AppCompatActivity
{
private
ViewPager
mMyViewPaper;
private
List<ImageView>
images;
private
List<View>
dots;
private
int
currentItem;
private
TextView
title;
private
MyAdapter
adapter;
//当前显示图片的位置
private
int
localPosition
=
0;
//图片的id
private
int[]
imageIds
=
new
int[]{R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
R.drawable.e};
//图片的标题
private
String[]
titles
=
new
String[]{"蓝天白云",
"青山绿水",
"枯藤老树",
"人间仙境",
"岛屿大树"};
private
TimerTask
mTimerTask;
//创建一个定时器
private
final
Timer
timer
=
new
Timer();
private
ImageView
mImageView;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMyViewPaper
=
(ViewPager)
findViewById(R.id.vp);
//显示的图片
images
=
new
ArrayList<>();
for
(int
i
=
0;
i
<
imageIds.length;
i++)
{
mImageView
=
new
ImageView(this);
mImageView.setBackgroundResource(imageIds[i]);
images.add(mImageView);
}
//指示点
dots
=
new
ArrayList<>();
dots.add(findViewById(R.id.dot_0));
dots.add(findViewById(R.id.dot_1));
dots.add(findViewById(R.id.dot_2));
dots.add(findViewById(R.id.dot_3));
dots.add(findViewById(R.id.dot_4));
title
=
(TextView)
findViewById(R.id.title);
title.setText(titles[0]);
adapter
=
new
MyAdapter(MainActivity.this,
images);
mMyViewPaper.setAdapter(adapter);
mMyViewPaper.setOnPageChangeListener(new
ViewPager.OnPageChangeListener()
{
@Override
public
void
onPageSelected(int
position)
{
position
=
position
%
images.size();
title.setText(titles[position]);
dots.get(position).setBackgroundResource(R.drawable.dot_focused);
dots.get(localPosition).setBackgroundResource(R.drawable.dot_normal);
localPosition
=
position;
currentItem
=
position;
}
/**
*
页面滑动时回调
*/
@Override
public
void
onPageScrolled(int
arg0,
float
arg1,
int
arg2)
{
}
/**
*
当ViewPager状态改变时,回调
*/
@Override
public
void
onPageScrollStateChanged(int
state)
{
}
});
}
/**
*
轮播任务
*/
@Override
protected
void
onStart()
{
super.onStart();
mTimerTask
=
new
TimerTask()
{
@Override
public
void
run()
{
currentItem
=
(currentItem
+
1)
%
imageIds.length;
mHandler.sendEmptyMessage(0);
}
};
timer.schedule(mTimerTask,
2000,
2000);
}
/**
*
接收子线程传递的数据
*/
private
Handler
mHandler
=
new
Handler()
{
public
void
handleMessage(android.os.Message
msg)
{
//轮播到最后一张图片时,直接跳转至第一页,并且取消滑动效果
if
(currentItem
%
images.size()
==
0)
{
mMyViewPaper.setCurrentItem(currentItem,
false);
}
//非最后一张展示图片的滑动效果
mMyViewPaper.setCurrentItem(currentItem,
true);
}
};
@Override
protected
void
onStop()
{
super.onStop();
timer.cancel();
}
}自定义了一个Adapter适配器:public
class
MyAdapter
extends
PagerAdapter
{
private
List<ImageView>
images;
private
Context
mContext;
public
MyAdapter(Context
context,List<ImageView>
images)
{
this.mContext
=context;
this.images
=
images;
}
//返回Viewpager中的view个数
@Override
public
int
getCount()
{
return
Integer.MAX_VALUE;
}
//判断instantiateItem中的函数返回的key与一个页面示图是不是代表同一个
//通常直接相等就OK啦
@Override
public
boolean
isViewFromObject(View
arg0,
Object
arg1)
{
return
arg0
==
arg1;
}
//移除一个固定位置的页面
@Override
public
void
destroyItem(ViewGroup
view,
int
position,
Object
object)
{
view.removeView((View)
object);
}
//将固定位置的View添加到Viewgroup中,并创建显示出来
@Override
public
Object
instantiateItem(ViewGroup
view,
final
int
position)
{
ImageView
imageView
=
images.get(position
%
images.size());
ViewGroup
parent
=
(ViewGroup)
imageView.getParent();
//这里是动态添加示图,一个子类只能有一个父类
//判断下如果parent存在一定要记得移除
if
(parent
!=
null)
{
parent.removeView(imageView);
}
view.addView(imageView);
//给图片添加点击事件
imageView.setOnClickListener(new
View.OnClickListener(){
@Override
public
void
onClick(View
v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 驱油用表面活性剂(磺酸盐类)项目市场研究报告及运营管理方案|瑞克咨询|2024年编|
- 2024年新疆住院医师-新疆住院医师口腔内科笔试参考题库含答案
- 2024年教师招聘考试-小学语文教师招聘笔试参考题库含答案
- 2024年建筑八大员(九大员)住房城乡建设领域现场专业人员考试-施工员笔试参考题库含答案
- 2024年岗位知识竞赛-村级动物防疫员笔试参考题库含答案
- 2024年安徽住院医师-安徽住院医师耳鼻喉科笔试参考题库含答案
- 2024年大学试题(财经商贸)-租船实务与法律笔试参考题库含答案
- 2024年大学试题(财经商贸)-WTO与中国WTO与中国对外贸易笔试参考题库含答案
- 2024年大学试题(计算机科学)-微型计算机系统与接口笔试参考题库含答案
- 2024年大学试题(经济学)-公共经济学笔试参考题库含答案
- 2024年江西天然气赣江能源有限公司招聘笔试参考题库附带答案详解
- 2024届湖北省襄阳市枣阳县重点名校中考物理全真模拟试卷含解析
- 来宾市公安局兴宾分局招聘辅警考试试题及答案
- 中职实训项目设计方案舞蹈
- 2024春期国开电大专科《社会调查研究与方法》在线形考(形成性考核一至四)试题及答案
- 太原市2024年高三一模(高三年级模拟考试一)英语试卷(含答案)
- 《脆而不韧的黄龙玉》课件
- 2024年山东高速集团招聘985人高频考题难、易错点模拟试题(共500题)附带答案详解
- 24春国家开放大学《家畜环境卫生与设施》形考作业2参考答案
- 2024年吉林省气象台招聘工作人员历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 2024年03月上海市工商外国语学校招考聘用15人笔试近6年高频考题难、易错点荟萃答案带详解附后
评论
0/150
提交评论