[android] 轮播图-滑动图片标题焦点

[android] 轮播图-滑动图片标题焦点,第1张

概述谷歌提供的v4包,ViewPager 在布局文件中,先添加<android.support.v4.view.ViewPager/>控件,这个只是轮播的区域 在布局文件中,布置标题描述部分

谷歌提供的v4包,VIEwPager

在布局文件中,先添加<androID.support.v4.vIEw.VIEwPager/>控件,这个只是轮播的区域

 

在布局文件中,布置标题描述部分

线性布局,竖向排列,背景色黑色半透明,这个布局和上面的VIEwPager底部对齐layout_alignBottom=”@ID/xxx”

<TextVIEw/>居中显示,

小点部分,先放过空的linearLayoutIDll_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] 轮播图-滑动图片标题焦点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1121187.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存