安卓开发笔记(三十二):banner轮播图的实现
一.activity.xml
我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"> <ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"> <com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="170dp" /> </LinearLayout>
</ScrollView> </LinearLayout>
二.添加相关的库以及网络权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
implementation'com.youth.banner:banner:1.4.10'
implementation "com.github.bumptech.glide:glide:4.6.1"
三.activity.java
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.Toast; import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity {
Banner banner;//banner组件
List mlist;//图片资源
List<String> mlist1;//轮播标题
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ActionBar actionBar=getSupportActionBar();
if(actionBar !=null)
{
actionBar.hide();
} mlist = new ArrayList<>();
mlist.add("http://pic0.iqiyipic.com/common/lego/20190504/5c7c889174894cd7aed96218320e1945.jpg");
mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/902898f2117c41ccaea5fa36eb4d0545.jpg");
mlist.add("http://pic3.iqiyipic.com/common/lego/20190504/8245013abf2b44ce8736d7435d4567dc.jpg");
mlist.add("http://pic2.iqiyipic.com/common/lego/20190501/9cdcc1a900a34c1497aeff9c5af610f2.jpg");
mlist1 = new ArrayList<>();
mlist1.add("这是一个美好的早晨");
mlist1.add("但我们并不美好");
mlist1.add("因为我是学人工智能的");
mlist1.add("已经被学金融的虐得头破血流"); banner = findViewById(R.id.banner); banner.setImageLoader(new GlideImageLoader()); //设置图片加载器
banner.setImages(mlist);//设置图片源
banner.setBannerTitles(mlist1);//设置标题源
banner.setDelayTime();//设置轮播事件,单位毫秒
banner.setBannerAnimation(Transformer.ZoomOutSlide);//设置轮播动画,动画种类很多,有兴趣的去试试吧,我在这里用的是默认
//stack /**
* 轮播图的点击事件
*/
banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(int position) {
Toast.makeText(MainActivity.this, "这是第" + position +"个效果", Toast.LENGTH_SHORT).show();
}
});
banner.setIndicatorGravity(BannerConfig.CENTER);//设置指示器的位置 banner.start();//开始轮播,一定要调用此方法。 } //下面的代码可写可不写,用于提升控件的加载效率
protected void onResume() {
super.onResume();
banner.start();
} @Override
protected void onStop() {
super.onStop();
banner.stopAutoPlay();
} }
四.网络图片加载的新类
import android.content.Context;
import android.widget.ImageView; import com.bumptech.glide.Glide;
import com.youth.banner.loader.ImageLoader; public class GlideImageLoader extends ImageLoader { public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } @Override
public ImageView createImageView(Context context) { ImageView imageView = new ImageView(context);
return imageView;
} }
代码一共就这些,全部照抄不误就可以得到我们的banner效果了,十分简单。
安卓开发笔记(三十二):banner轮播图的实现的更多相关文章
- 安卓开发笔记(十二):SQLite数据库储存(上)
SQLite数据库存储(上) 创建数据库 Android专门提供了一个 SQLiteOpenHelper帮助类对数据库进行创建和升级 SQLiteOpenHelper需要创建一个自己的帮助类去继承它并 ...
- 原生无缝Banner轮播图
话不多说,先展示效果图.由于录制工具,稍显卡顿,实际是流畅的.可以看到实现了无缝轮播,鼠标悬停,点击左右上下按钮切换Banner的功能,如图1所示. 图1 原生无缝banner效果展示 以我这个轮播图 ...
- jQuery与原生js实现banner轮播图
jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...
- 用JavaScript制作banner轮播图
JavaScript_banner轮播图 让我们一起来学习一下用js怎么实现banner轮播图呢? 直接看代码: <!DOCTYPE html> <html> <head ...
- iOS开发之 用第三方类库实现轮播图
在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod ...
- Bootstrap 学习笔记 项目实战 响应式轮播图
左右两个箭头可以随浏览器缩放进行移动 保持在图片中间 Html代码: <!DOCTYPE html> <html lang="zh-cn"> <hea ...
- 前端框架之jQuery(二)----轮播图,放大镜
事件 页面载入 ready(fn) //当DOM载入就绪可以查询及操纵时绑定一个要执行的函数. $(document).ready(function(){}) -----------> ...
- 树莓派开发笔记(十二):入手研华ADVANTECH工控树莓派UNO-220套件(一):介绍和运行系统
前言 树莓派也可以做商业应用,工业控制,其稳定性和可靠性已经得到了验证,故而工业控制,一些停车场等场景也有采用树莓派作为主控的,本片介绍了研华ADVANTECH的树莓派套件组UNO-220-P4N ...
- 安卓开发笔记——TabHost组件(二)(实现底部菜单导航)
上面文章<安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航)>中提到了利用自定义View(ImageView+TextView)来设置一个底部菜单的样式 这边再补充一种更为灵 ...
随机推荐
- Servlet 使用介绍(1)
说明 本篇介绍java web中比较重要的一个技术:servlet.servlet是一种对用户请求动态响应的一个技术,是java web的核心一环.对于一般服务性质的纯后台服务应用而言,或许整个应用是 ...
- Spring Boot 2 配置服务器访问日志
Tomcat控制台中看到的日志是服务器的日志,而服务器访问日志则是记录服务处理的请求信息. 开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8 1.新建一个名 ...
- [b0043] python 归纳 (二八)_python测试使用快速上手
参考 Python必会的单元测试框架 —— unittest # -*- coding: utf-8 -*- """ 测试代码组织,整理( 非可执行) "&qu ...
- PHP 部分语法(二)
array() 创建数组: 1.数值数组:带数字 ID 键的数组 2.关联数组:带有指定键的数组,键关联一个值 3.多维数组:包含一个或多个数组的数组 $arr = array("Hello ...
- Python—导入自定义的模块和包(指定路径下的模块和包)
模块路径如下图: import sys sys.path.append(r"E:\project\path") print "===>", sys.arg ...
- Linux-3.14.12内存管理笔记【构建内存管理框架(4)】
虽说前文分析内存管理框架构建的实现,提到了find_zone_movable_pfns_for_nodes(),但这里不准备复述什么,仅针对required_movablecore和required_ ...
- ifconfig|grep eth0|awk '{print $5}' 命令详解
因需要将linx下获取某个网中的MAC地址,可以使用如下命令获取: ifconfig|grep eth0|awk '{print $5}' ifconfig: 输出linux下所有网口的信息(包括IP ...
- @ConfigurationProperties(pref="")加载局部配置文件
刚开始@ConfigurationProperties(文件名)直接在参数里加文件名,其实是配置前缀pref="前缀".加载局部配置文件是@PropertySource(value ...
- poj 3468 A Simple Problem with Integers 线段树 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=3468 线段树模板 要背下此模板 线段树 #include <iostream> #include <vector> ...
- linux常用命令指南——查找文件我最强:find
2.3.2 查找文件我最强:find 2.3.2.1 find查找常用命令示例 find / -name 'wfy.txt' # 从根目录下开始查找文件wfy.txt find . -name '*f ...