Android Studio App开发实战项目之广告轮播(附源码 可用于大作业)

需要图片集和源码请点赞关注收藏后评论区留言即可~~~

电商App的首页上方,都在明显位置放了一栏广告条,并且广告条会轮播,非常吸引眼球,这种广告轮播的功能,为推广热门事物出力甚大。

轮播视频已上传至我的主页,有需要可自行前往观看~

一、需求描述

作为App首页的常客,广告轮播特效早就为人所熟知,它的界面也司空见惯 效果如下

广告条除了广告图片之外,底部还有一排圆点,这些圆点被称作指示器,每当轮播到第几个广告,指示器就高亮显示第几个圆点,其余圆点显示白色,如此依赖用户便知道当前播放到了第几个广告

Android Studio App开发实战项目之广告轮播(附源码 可用于大作业)

Android Studio App开发实战项目之广告轮播(附源码 可用于大作业)

Android Studio App开发实战项目之广告轮播(附源码 可用于大作业)

二、界面设计

用到的控件如下

1:相对视图
2:单选组
3:翻页视图
4:翻页适配器
此外 广告每隔两三秒就轮播下一个广告,这种自动轮播可采用Handler+Runnable,因此有必要将广告条封装为单独的控件,以便随时随地在各页面中添加。

三、关键部分

1:定义广告条的XML布局文件

采用相对布局以及内部嵌套容纳广告图片的翻页视图

2:编写广告条的Java定义代码

3:为广告条添加图片清单

指定广告图片的来源以及数量

4:实现广告条的自动轮播功能

给广告条添加图片清单之后,还得设置具体的轮播规则

5:在活动页面中使用广告条控件

引用时声明路径

四、代码

Java类

package com.example.chapter10;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.chapter10.util.Utils;
import com.example.chapter10.widget.BannerPager;
import com.example.chapter10.widget.BannerPager.BannerClickListener;

import java.util.ArrayList;
import java.util.List;

@SuppressLint("DefaultLocale")
public class BannerPagerActivity extends AppCompatActivity implements BannerClickListener {
    private static final String TAG = "BannerPagerActivity";
    private TextView tv_pager;

    private List<integer> getImageList() {
        ArrayList<integer> imageList = new ArrayList<integer>();
        imageList.add(R.drawable.banner_1);
        imageList.add(R.drawable.banner_2);
        imageList.add(R.drawable.banner_3);
        imageList.add(R.drawable.banner_4);
        imageList.add(R.drawable.banner_5);
        return imageList; // &#x8FD4;&#x56DE;&#x9ED8;&#x8BA4;&#x7684;&#x5E7F;&#x544A;&#x56FE;&#x7247;&#x5217;&#x8868;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_banner_pager);
        tv_pager = findViewById(R.id.tv_pager);
        // &#x4ECE;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x4E2D;&#x83B7;&#x53D6;&#x540D;&#x53EB;banner_pager&#x7684;&#x5E7F;&#x544A;&#x8F6E;&#x64AD;&#x6761;
        BannerPager banner = findViewById(R.id.banner_pager);
        // &#x83B7;&#x53D6;&#x5E7F;&#x544A;&#x8F6E;&#x64AD;&#x6761;&#x7684;&#x5E03;&#x5C40;&#x53C2;&#x6570;
        LayoutParams params = (LayoutParams) banner.getLayoutParams();
        params.height = (int) (Utils.getScreenWidth(this) * 250f / 640f);
        banner.setLayoutParams(params); // &#x8BBE;&#x7F6E;&#x5E7F;&#x544A;&#x8F6E;&#x64AD;&#x6761;&#x7684;&#x5E03;&#x5C40;&#x53C2;&#x6570;
        banner.setImage(getImageList()); // &#x8BBE;&#x7F6E;&#x5E7F;&#x544A;&#x8F6E;&#x64AD;&#x6761;&#x7684;&#x5E7F;&#x544A;&#x56FE;&#x7247;&#x5217;&#x8868;
        banner.setOnBannerListener(this); // &#x8BBE;&#x7F6E;&#x5E7F;&#x544A;&#x8F6E;&#x64AD;&#x6761;&#x7684;&#x5E7F;&#x544A;&#x70B9;&#x51FB;&#x76D1;&#x542C;&#x5668;
        banner.start(); // &#x5F00;&#x59CB;&#x5E7F;&#x544A;&#x56FE;&#x7247;&#x7684;&#x8F6E;&#x64AD;&#x6EDA;&#x52A8;
    }

    // &#x4E00;&#x65E6;&#x70B9;&#x51FB;&#x4E86;&#x5E7F;&#x544A;&#x56FE;&#xFF0C;&#x5C31;&#x56DE;&#x8C03;&#x76D1;&#x542C;&#x5668;&#x7684;onBannerClick&#x65B9;&#x6CD5;
    public void onBannerClick(int position) {
        String desc = String.format("&#x60A8;&#x70B9;&#x51FB;&#x4E86;&#x7B2C;%d&#x5F20;&#x56FE;&#x7247;", position + 1);
        tv_pager.setText(desc);
    }

}
</integer></integer></integer>

滚动视图类

package com.example.chapter10;

import android.os.Bundle;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.chapter10.adapter.PlanetListAdapter;
import com.example.chapter10.bean.Planet;
import com.example.chapter10.widget.NoScrollListView;

public class NoscrollListActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_noscroll_list);
        PlanetListAdapter adapter1 = new PlanetListAdapter(this, Planet.getDefaultList());
        // &#x4ECE;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x4E2D;&#x83B7;&#x53D6;&#x540D;&#x53EB;lv_planet&#x7684;&#x5217;&#x8868;&#x89C6;&#x56FE;
        // lv_planet&#x662F;&#x7CFB;&#x7EDF;&#x81EA;&#x5E26;&#x7684;ListView&#xFF0C;&#x88AB;ScrollView&#x5D4C;&#x5957;&#x53EA;&#x80FD;&#x663E;&#x793A;&#x4E00;&#x884C;
        ListView lv_planet = findViewById(R.id.lv_planet);
        lv_planet.setAdapter(adapter1); // &#x8BBE;&#x7F6E;&#x5217;&#x8868;&#x89C6;&#x56FE;&#x7684;&#x884C;&#x661F;&#x9002;&#x914D;&#x5668;
        lv_planet.setOnItemClickListener(adapter1);
        lv_planet.setOnItemLongClickListener(adapter1);
        PlanetListAdapter adapter2 = new PlanetListAdapter(this, Planet.getDefaultList());
        // &#x4ECE;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x4E2D;&#x83B7;&#x53D6;&#x540D;&#x53EB;nslv_planet&#x7684;&#x4E0D;&#x6EDA;&#x52A8;&#x5217;&#x8868;&#x89C6;&#x56FE;
        // nslv_planet&#x662F;&#x81EA;&#x5B9A;&#x4E49;&#x63A7;&#x4EF6;NoScrollListView&#xFF0C;&#x4F1A;&#x663E;&#x793A;&#x6240;&#x6709;&#x884C;
        NoScrollListView nslv_planet = findViewById(R.id.nslv_planet);
        nslv_planet.setAdapter(adapter2); // &#x8BBE;&#x7F6E;&#x4E0D;&#x6EDA;&#x52A8;&#x5217;&#x8868;&#x89C6;&#x56FE;&#x7684;&#x884C;&#x661F;&#x9002;&#x914D;&#x5668;
        nslv_planet.setOnItemClickListener(adapter2);
        nslv_planet.setOnItemLongClickListener(adapter2);
    }
}

XML文件

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

    <!-- 自定义的广告轮播条,需要使用全路径 -->
    <com.example.chapter10.widget.bannerpager android:id="@+id/banner_pager" android:layout_width="match_parent" android:layout_height="wrap_content">

    <textview android:id="@+id/tv_pager" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingtop="10dp" android:text="&#x4E0A;&#x9762;&#x7684;&#x5E7F;&#x544A;&#x56FE;&#x7247;&#x4F1A;&#x81EA;&#x52A8;&#x8F6E;&#x64AD;" android:textcolor="@color/black" android:textsize="17sp">

</textview></com.example.chapter10.widget.bannerpager></linearlayout>

2

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">

    <androidx.viewpager.widget.viewpager android:id="@+id/vp_banner" android:layout_width="match_parent" android:layout_height="match_parent">

    <radiogroup android:id="@+id/rg_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingbottom="2dp" android:orientation="horizontal" android:layout_alignparentbottom="true" android:layout_centerhorizontal="true">

</radiogroup></androidx.viewpager.widget.viewpager></relativelayout>

创作不易 觉得有帮助请点赞关注收藏~~~

Original: https://blog.csdn.net/jiebaoshayebuhui/article/details/127816603
Author: showswoller
Title: Android Studio App开发实战项目之广告轮播(附源码 可用于大作业)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655087/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球