![[android] 轮播图-滑动图片标题焦点,第1张 [android] 轮播图-滑动图片标题焦点,第1张](/aiimages/%5Bandroid%5D+%E8%BD%AE%E6%92%AD%E5%9B%BE-%E6%BB%91%E5%8A%A8%E5%9B%BE%E7%89%87%E6%A0%87%E9%A2%98%E7%84%A6%E7%82%B9.png)
谷歌提供的v4包,VIEwPager
在布局文件中,先添加<androID.support.v4.vIEw.VIEwPager/>控件,这个只是轮播的区域
在布局文件中,布置标题描述部分
线性布局,竖向排列,背景色黑色半透明,这个布局和上面的VIEwPager底部对齐layout_alignBottom=”@ID/xxx”
<TextVIEw/>居中显示,
小点部分,先放过空的linearLayout,ID是ll_points在代码中对其进行填充
获取VIEwPager对象
调用VIEwPager对象的setAdapter()方法,参数:PagerAdapter对象
因为PagerAdapter是抽象类,定义一个MyPagerAdapter继承PagerAdapter,实现以下方法
重写getCount()方法,返回轮播的个数
重写isVIEwFromObject()方法,返回布尔值,
重写instantiateItem()方法,将当前vIEw对象添加到VIEwGroup对象,返回当前对象
重写destroyItem()方法,从当前container中删除指定位置(position)的VIEw
切换描述标题字符串
定义一个String[]数组,保存标题
调用VIEwPager对象的setonPagerchangelistener()方法,参数:OnPagerchangelistener对象
匿名内部类实现,重写以下方法
onPageSelected()方法,页面切换后调用,传递进参数,int索引
onPageScrolled()方法,当页面正在滚动的时候
onPageScrollStateChanged()方法,当页面滚动状态改变的时候
小图标部分
新建两个shape文件,使用xml画两个原点
添加节点<shape>,设置形状为原型androID:shape=”oval”
添加尺寸节点<size> ,设置宽度,高度,androID:wIDth=”” androID:height=””
添加颜色节点<solID>,设置颜色 androID:color=””
正常情况下,灰色点,焦点的时候,白色的点,两个xm文件的颜色不一样
point.xml
<?xml version="1.0" enCoding="utf-8"?><shape xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:shape="oval" > size androID:height="4dp" androID:wIDth="4dp" /> solID androID:color="#aaffffff"/></shape>
point_write.xml
="#ffffffff">
新建一个selector文件,当图片enable的时候白色的点,不可用的时候灰色的点,不同的状态不同的图片
添加<selector>节点
添加<item>节点,设置图片属性androID:drawable=”” 设置状态androID:enabled=”true|false”
point_selector.xml
selector ="http://schemas.androID.com/apk/res/androID" > item androID:drawable="@drawable/point" androID:state_enabled="false"></item="@drawable/point_write"="true">selector>
循环大图片的个数,创建ImageVIEw对象,
调用ImageVIEw对象setimageResource()方法,设置资源,参数:selector文件
调用ImageVIEw对象的setLayoutParams()方法,给小图标ImageVIEw对象添加一些margin值,参数:LayoutParams对象,获取linearLayout.LayoutParams对象,调用LayoutParams对象的rightmargin()方法,设置margin值
调用ImageVIEw对象的setEnabled()方法,设置是否可用,参数:布尔值
获取linearLayout对象,调用linearLayout对象的addVIEw()方法,把小图标的视图填进去,参数:ImageVIEw对象
默认第一个是焦点,随着图片滑动,焦点跟着改变
package com.tsh.myvIEwpager;import java.util.ArrayList; java.util.List; androID.app.Activity; androID.os.Bundle; androID.support.v4.vIEw.PagerAdapter; androID.support.v4.vIEw.VIEwPager; androID.support.v4.vIEw.VIEwPager.OnPagechangelistener; androID.vIEw.VIEw; androID.vIEw.VIEwGroup; androID.Widget.ImageVIEw; androID.Widget.linearLayout; androID.Widget.TextVIEw;public class MainActivity extends Activity { private VIEwPager vp_banner; linearLayout ll_points; TextVIEw tv_Title; private List<VIEw> banners; private String[] Titles=new String[]{ "新闻标题1","新闻标题2" }; private List<ImageVIEw> points=new ArrayList<ImageVIEw>(); @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); // 初始化 vp_banner = (VIEwPager) findVIEwByID(R.ID.vp_banner); ll_points = (linearLayout) findVIEwByID(R.ID.ll_points); tv_Title = (TextVIEw) findVIEwByID(R.ID.tv_Title); banner部分 banners = new ArrayList<>(); ImageVIEw img1 = new ImageVIEw(this); img1.setimageResource(R.drawable.a); banners.add(img1); ImageVIEw img2 = ); img2.setimageResource(R.drawable.b); banners.add(img2); ImageVIEw img3 = ); img3.setimageResource(R.drawable.c); banners.add(img3); 小图标 ll_points=(linearLayout) findVIEwByID(R.ID.ll_points); for(int i=0;i<banners.size();i++){ ImageVIEw image=); image.setimageResource(R.drawable.point_selector); linearLayout.LayoutParams params=new linearLayout.LayoutParams(5,5); params.rightmargin=4; image.setLayoutParams(params); ll_points.addVIEw(image); if(i==0){ image.setEnabled(true); }else{ image.setEnabled(false); } points.add(image); } 设置适配器 vp_banner.setAdapter( MyPagerAdapter()); vp_banner.setonPagechangelistener( OnPagechangelistener() { @OverrIDe voID onPageSelected(int arg0) { tv_Title.setText(Titles[arg0]); 小图标处理 for(ImageVIEw point:points){ point.setEnabled(); } points.get(arg0).setEnabled(); } @OverrIDe voID onPageScrolled(int arg0,float arg1,1)"> arg2) { Todo auto-generated method stub } @OverrIDe voID onPageScrollStateChanged( arg0) { } }); } private class MyPagerAdapter PagerAdapter { @OverrIDe voID destroyItem(VIEwGroup container,1)"> position,Object object) { container.removeVIEw(banners.get(position)); } @OverrIDe public Object instantiateItem(VIEwGroup container,1)"> position) { container.addVIEw(banners.get(position)); return banners.get(position); } @OverrIDe getCount() { banners.size(); } @OverrIDe boolean isVIEwFromObject(VIEw arg0,Object arg1) { return arg0 == arg1; } }}
总结
以上是内存溢出为你收集整理的[android] 轮播图-滑动图片标题焦点全部内容,希望文章能够帮你解决[android] 轮播图-滑动图片标题焦点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)