当前位置:首页 > 谈天说地

android ViewPager实现一个无限轮播图

34资源网2022-02-04485

上节我们实现了一个图片可以无限滑动的viewpager,这一节我们需要自定义一个viewpager来实现我们想要展现的布局

首先我们需要建一个包,然后新建一个java类,名字随便起

这个类我们需要随便继承自一个viewgroup就行,viewgroup就是可以存放子控件的view,我们的各种layout,比如linearlayour或者relativelayout这种可以在里面放东西的view,而textview或者imageview这种只能放内容而不能放其他view的就是普通view

然后我们选中三个构造器

package com.example.viewpager.views;
 
import android.content.context;
import android.util.attributeset;
import android.view.layoutinflater;
import android.widget.relativelayout;
 
import androidx.annotation.nonnull;
 
import com.example.viewpager.r;
 
import java.util.abstractset;
 
public class looperpager extends relativelayout {
 
    public looperpager(context context) {
 
        super(context);
    }
    public looperpager(context context,@nonnull abstractset abstrs) {
 
        super(context, (attributeset) abstrs);
    }
    public looperpager(context context,@nonnull abstractset abstrs,int defstyleattr) {
 
        super(context, (attributeset) abstrs,defstyleattr);
        
    }
 
}

 然后我们在新建一个layout文件把想要实现的布局写进去

因为我们是为viewpager实现一个无限轮播的轮播图,首先当然是写一个viewpager,然后是一个上方的标题,我们写一个textview,因为想要和悲情区分开来,我们给背景设定为红色,标题设定为白色,然后把文字居中,最后因为我们想要图片在滑动时下方有一排根据图片数量显示滑动时代表图片的标志的样式,我们设定一个在控件底部居中显示的线性布局,然后再线性布局内设定三个白色大小为5dp前后间隔为5dp的view

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:background="@color/coloraccent"//背景设为红色
    android:orientation="vertical">
 
    <androidx.viewpager.widget.viewpager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
 
    <textview
        android:id="@+id/textview2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="我是标题"
        android:background="#ffffff "//背景设为白色
        android:textalignment="center"//居中 
        />
    <linearlayout
        android:layout_centerhorizontal="true"//设为居中
        android:layout_alignparentbottom="true"//设为底部
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <view
        android:layout_width="5dp"
        android:layout_height="5dp"
            android:layout_marginleft="5dp"
            android:layout_marginright="5dp"
            android:background="#ffffff "/>
        <view
        android:layout_width="5dp"
        android:layout_height="5dp"
            android:layout_marginleft="5dp"
            android:layout_marginright="5dp"
            android:background="#ffffff "/>
        <view
        android:layout_width="5dp"
        android:layout_height="5dp"
            android:layout_marginleft="5dp"
            android:layout_marginright="5dp"
            android:background="#ffffff "/>
 
    </linearlayout>
 
 
</relativelayout>

实现效果就是这样的

 接下来就是把我们写好的自定义布局绑定我们的自定义的类,因为我们想要无论调那个构造方法最后像都让他去调我们写绑定的方法,所以我们要把其他方法里面的supper都改成this

package com.example.viewpager.views;
 
import android.content.context;
import android.util.attributeset;
import android.view.layoutinflater;
import android.widget.relativelayout;
 
import androidx.annotation.nonnull;
 
import com.example.viewpager.r;
 
import java.util.abstractset;
 
public class looperpager extends relativelayout {
 
    public looperpager(context context) {
 
        this(context,null);
    }
    public looperpager(context context,@nonnull abstractset abstrs) {
 
        this(context,  abstrs,0);
    }
    public looperpager(context context,@nonnull abstractset abstrs,int defstyleattr) {
 
        super(context, (attributeset) abstrs,defstyleattr);
        //自定义布局绑定当前类,this:当前类,ture:确定绑定
        layoutinflater.from(context).inflate(r.layout.looper_pager,this,true);
    }
 
}

 下一步就是实验我们的自定义控件有没有成功啦,

重新创建一个启动文件然后在再创建一个lauout文件

,这里我们右键刚才的looppager选择

 然后在新建的layout文件里面粘贴设定好宽和高

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".mainactivity">
 
    <com.example.viewpager.views.looperpager
        android:layout_width="match_parent"
        android:layout_height="120dp"/>
 
 
 
</relativelayout>

最后在我们新建的activity里面绑定刚才写好的layout文件

package com.example.viewpager;
 
import android.os.bundle;
import android.os.persistablebundle;
 
import androidx.annotation.nullable;
import androidx.appcompat.app.appcompatactivity;
 
public class supper_mainactivity extends appcompatactivity {
    @override
    public void oncreate(@nullable bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.supper_activity_main);
    }
}

效果就实现了 

但刚开始写完之后程序打开就报错,我从凌晨一点开始找错误,找到两点半发现布局文件里面的view写成小写view了,当时的心情不是一般的酸爽.....................

到此这篇关于android viewpager实现一个无限轮播图的文章就介绍到这了,更多相关android viewpager轮播图内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/7029.html

分享给朋友:

相关文章

李开复的经典语录32句

李开复的经典语录32句

李开复的经典语录32句分享:…

coco奶茶店加盟费大概多少钱?有哪些优势?

coco奶茶店加盟费大概多少钱?有哪些优势?

CoCo奶茶来自宝岛台湾的奶茶加盟连锁品牌,以绿色健康休闲奶茶饮品为主打的连锁机构,在中国及东南亚地区拥有众多加盟连锁店。相信很多人都想加盟这个奶茶店吧?那么,coco奶茶店加盟费大概多少钱?加盟有哪些优势呢?下面小编就详细和大家介绍下吧。…

调整心态温暖哲理经典语录,看这些语录能够调整心态

调整心态温暖哲理经典语录,看这些语录能够调整心态

取得成功是他人不成功时仍在坚持不懈。若自身不作出一点外貌,别人想拉你一把都不知道你的手在哪儿。直至你不会再找我聊,直至你找不着我,直至最终,你一直在某一瞬间猛地想起我。但是,那个时候,被你弄丢的我就确实早已没有了,也再不想要你再找回家了。理…

卡斯数据是干什么的(免费大数据查询平台)

卡斯数据是干什么的(免费大数据查询平台)

短视频/直播电商不负众望,成为2020年品牌营销最热关键词。G2格局下两大顶流——抖音和快手,也自然吸引了各方关注。相较抖音而言,快手独特的老铁氛围像自带结界,不懂“规矩”的内容创作者和品牌方在这里寸步难行。 究竟快手直播电商现状如何?什么…

视频号入口在哪里(视频号直播入口新手手册)

视频号入口在哪里(视频号直播入口新手手册)

视频号助手在哪里?视频号助手什么时候上线?微信视频号助手正式上线目前微信视频号助手已经开始内测使用了,大家可以直接在PC端扫码登录,管理自己的视频号,可以看到自己的各项动态数据,非常方便管理。 视频号助手在哪里 视频号助手在哪里? 手机微…