9.高级控件(三)之 Gallery及ViewPager

GalleryViewPager GalleryViewPager 实现的画廊效果 立即下载

一.Gallery 画廊(过时的控件,被ViewPager替代)

作用:用来展示图片的,滑一下下一张

效果图:


具体实现代码:

layout

activity_gallery.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Gallery
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/g_gallery_image"
        >
    </Gallery>

</LinearLayout>
Java

GalleryActivity.java

package com.zking.android09_widgetplus;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

/**
 * Created by Administrator on 2017/6/13 0013.
 */

public class GalleryActivity extends AppCompatActivity{

        private Gallery g_gallery_image;
        private int images[]={R.drawable.s1,R.drawable.s2,R.drawable.s3,R.drawable.s4,};

        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.activity_gallery);
                 g_gallery_image = (Gallery) findViewById(R.id.g_gallery_image);
                 g_gallery_image.setAdapter(new MyAdapter());
        }
        //设置自定义适配器
        class MyAdapter extends BaseAdapter{

                @Override
                public int getCount() {
                    return images.length;
                }

                @Override
                public Object getItem(int position) {
                    return images[position];
                }

                @Override
                public long getItemId(int position) {
                    return position;
                }

                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                        ImageView imageView=new ImageView(GalleryActivity.this);
                        //给ImageView设置宽和高
                        Gallery.LayoutParams layoutParams=new Gallery.LayoutParams(600,500);//查看:Ctrl+P
                        imageView.setLayoutParams(layoutParams);
                        imageView.setImageResource(images[position]);
                        return imageView;
                }
        }
}


二.ViewPager

知识概述
    <1>引导页
        适配器   PagerAdapter
        滑动监听 addOnPageChangeListener
        导航点   github开源框架:ViewPagerIndicator
                属性:
                setRadius:设置半径
                setPageColor:点的背景颜色
                setBackgroundColor:控件的背景颜色
                setFillColor:设置点的背景颜色
                setStrokeColor:设置点背景的边框颜色
        进入主界面

   <2>主界面框架



效果图


具体实现代码

layout

activity_view_pager.xml

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.zking.android09_widgetplus.ViewPagerActivity">

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/vp_view_page_image"
        >
    </android.support.v4.view.ViewPager>
    
</LinearLayout>
Java
ViewPagerActivity.java

package com.zking.android09_widgetplus;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

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

public class ViewPagerActivity extends AppCompatActivity {

        private ViewPager vp_view_page_image;
        private int images[]={R.drawable.s1,R.drawable.s2,R.drawable.s3,R.drawable.s4};
        //List<只要是View类型>,就可以左右滑动
        private List<View> views=new ArrayList<>();//定义一个集合

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_view_pager);
                vp_view_page_image = (ViewPager) findViewById(R.id.vp_view_page_image);

                for (int i = 0; i < images.length; i++) {
                       ImageView iv=new ImageView(this);
                       iv.setImageResource(images[i]);
                       views.add(iv);
                }

                vp_view_page_image.setAdapter(new MyAdapter());
        }

        //自己的专属适配器
        class MyAdapter extends PagerAdapter{

                @Override
                public int getCount() {
                    return views.size();
                }

                //String:字符串,数据类型    TextView:控件(能写界面的)
                @Override
                public boolean isViewFromObject(View view, Object object) {
                    return view==object;
                }

                //Alt+Insert-->Override Methods-->第三个和第四个
                //类似GetView方法(添加)
                @Override
                public Object instantiateItem(ViewGroup container, int position) {
                        View v=views.get(position);
                        container.addView(v);
                        return v;
                }

                //销毁
                @Override
                public void destroyItem(ViewGroup container, int position, Object object) {
                        //super.destroyItem(container, position, object);//写上这行代码,有点机型会报错
                        View v=views.get(position);//销毁哪一个
                        container.removeView(v);
                }

        }

}




ViewPager 实现gallery效果+无限循环滚动 ViewPager 无限滚动 gallery效果 立即下载

相关推荐

gallery代替viewpager

用gallery写成类似viewpager的分页效果

利用ViewPager实现画廊Gallery效果

1 需求确认 2利用viewpager实现画廊效果 viewpager的继承关系 使用ViewGroup的setClipChildrenboolean clipChildren方法 使用viewpager的setPageTransformer方法实现vp页面切换效果 3实战代码 首先是父级布局 viewpager需要显示的内容 实现画廊效果1、 需求确认最近做的一个小学的定制项目,谈需求的时候客户提

麻薯帅比的博客 1万+

Android-利用Viewpager实现真正的Gallery左右条目可点击左右条目可滑动

利用Viewpager实现真正的Gallery, 左右条目可点击居中, 左右条目可滑动,也就是可以获得焦点

探索ViewPagerGallery:一款创新的Android图片滚动库

探索ViewPagerGallery:一款创新的Android图片滚动库 去发现同类优质开源项目:https://gitcode.com/ 如果你在寻找一个功能强大、易于使用的Android图片滚动解决方案,那么绝对值得你的关注。这个开源项目由开发者lzjin创建,它是一个优化过的ViewPager扩展,专为展示大量图片而设计,提供了丰富的特性集和流畅的用户体验。 项目简介 ViewPagerGa...

gitblog_00040的博客 440

ViewPagerGallery:ViewPager长廊

ViewPager一屏显示多个页面 使用ViewPager一般我们只需要一屏只显示一个页面,例如引导页、轮播图等。但它如何能一屏显示多个页面呢?其实很简单就是在控件的父布局或根布局添加clipChildren=false属性即可 android:clipChildren属性:是否限制子控件在其范围内显示,也就是说当子控件超出父控件规定大小时,超出部分是否显示,clipChildren默认值为true。 也就是不允许超出绘制 效果图 切换动画 public class ZoomOutPageTransformer implements ViewPager.PageTransformer { public static final float MIN_SCALE = 0.8f;//原图片缩小0.8倍 private static final float MIN_ALPHA = 0.6f;//透

Ubuntu20.04下 嵌入式 Qt 开发环境的搭建(适用于Tiny6410)

Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建 目录导航Ubuntu 下 Tiny6410 嵌入式 Qt 开发环境的搭建前言1.安装前的准备工作2.安装交叉编译器 前言 这篇文章,主要是基于 Ubuntu19.10版本而写,写此文的初衷,是为了自己使用,因为最近正在以Tiny6410板子做实训,所以也是初学者一枚,只能保证我遇上的问题统统能够解决掉,至于一些没遇上的,欢迎各位看客给我留言,大家一起讨论,一起解决。 注:本文会持续更新 1.安装前的准备工作 环境要求 Linux系统:U

繁臻的小窝 4894

Android使用ViewPager+Gallery实现画廊

在 ViewPager 滑动到新的页面时,根据当前页面的位置,将 Gallery 选中的位置设为相应的位置,保证 Gallery 与 ViewPager 的选中位置一致。Gallery 的 OnItemSelectedListener 监听器,在用户选择某个位置时,将当前的 ViewPager 的位置设为所选择位置,实现了 Gallery 与 ViewPager 的联动效果。的适配器,用于将图片资源数据展示在 Gallery 控件中,实现图片列表的效果。方法移除并清空指定位置的 View,释放内存。

CPK119的博客 526

【python】epub的电子书繁体字与简体字转换

中文繁体与简体转换

xiexianyou666的博客 3088

Android画廊效果-Gallery和ViewPager不同实现

之前项目开发的时候要实现一种画廊效果,分别利用Gallery或ViewPager实现了该效果:

JAVA技术博客 1万+

SPI 协议帧格式深度解析:从 8 位数据到 16 位扩展的 3 种模式

本文深入解析SPI协议的帧格式,涵盖从8位标准到16位扩展的三种模式。通过详细讲解SPI时钟模式、数据宽度配置及实际应用案例,帮助开发者掌握SPI外设的深度定制能力,提升嵌入式系统开发效率。特别适用于连接传感器、存储器和显示器等高速通讯场景。

weixin_34110749的博客 345

Matlab激活失败?手把手教你解决License checkout failed问题(附详细截图)

本文针对Matlab激活后出现“License checkout failed”错误的常见问题,提供了详细的解决方案。核心在于精准定位并正确填写Windows系统用户名,而非计算机名或账户全名。文章通过分步截图和命令指引,手把手教你使用`whoami`命令获取正确信息,并重新运行激活程序,从根本上解决因用户名填写错误导致的许可检查失败问题。

weixin_29062823的博客 571

Android开发学习之基于ViewPager实现Gallery画廊效果

通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间有些关联呢?两者在功能上的类似和重叠,总会让我们对此充满好奇,我们开始思考:如果不借助Gallery,我们能否做出像Gallery一样的效果呢?答案是肯定的。那么,我们今天就来一起学习自己...

maozhuxigood 253

时序约束实战:从setup/hold到时钟路径约束的深度解析

本文深度解析数字设计中的时序约束实战,重点探讨如何从setup/hold检查的核心原理出发,理解并应用时钟路径约束。文章通过剖析Path Requirement的计算逻辑,结合同频、倍频及异步时钟域等典型场景,提供了从解读时序报告到编写、调试SDC约束的系统方法,帮助工程师有效应对复杂SoC设计中的时序收敛挑战。

weixin_29291185的博客 105

Android gallery 的使用

这个控件在android 4.1以后不建议使用,替代UI为ViewPager,下面给出一个网友的事例: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android...

FLY_THINK2012的博客 188

cesium 气象云(体积云)

本文介绍了基于Cesium的气象云渲染技术方案,其核心是通过GPU加速的光线投射算法实现气象云的三维可视化。方案采用分层架构设计:GPU计算层由顶点着色器和片段着色器组成,负责光线投射计算、3D纹理采样和颜色映射;CPU控制层处理数据预处理、纹理创建和参数配置。关键技术包括:顶点着色器计算相机位置和光线方向,片段着色器实现光线步进采样、颜色映射和半透明混合。该方案高效解决了气象数据与地理场景的融合问题,支持云图、温度场等复杂三维气象数据的实时渲染,具有高真实感和良好性能。

God's asylum的博客 1201

声音源定位:利用YOLO与麦克风阵列定位声音来源YOLOv5、YOLOv8、YOLOv10

YOLO(You Only Look Once)是一个用于目标检测的深度学习模型。YOLO的最大特点是其通过一次前向传播即可完成多个目标的检测,速度和精度相对其他目标检测算法具有显著优势。YOLO模型的版本不断更新,从YOLOv1到YOLOv10,算法精度和速度都有了显著的提升。声音源定位是利用多个麦克风阵列收集的声音信号,通过算法计算声音源的位置。声音源定位的关键在于准确估计每个麦克风的声音到达时间,从而确定声音源的空间坐标。基于时延估计(TDOA)

YOLO 673

【Android初级】使用Gallery实现照片拖动的特效(附源码)

今天要分享一个非常简单的功能: 使用Android原生控件Gallery实现照片拖动的特效 实现思路如下: 在布局文件中定义一个Gallery控件 由于要显示多张图,为了方便,我直接引用了Android原生的图片资源 Gallery只是一个控件,为了将图片数据跟控件进行绑定,还需要一个继承BaseAdapter的自定义适配器 源码如下: 1、主activity和自定义内部类ImageAdapter: import android.app.Activity; import android.content.

snowyeti的博客 253

STM32CubeMX | 38-使用硬件SPI驱动以太网模块(W5500)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外设与以W5500通信,驱动以太网模块。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): W5500以太网模块 这里我使用常见的以太网模块W5500: W5500官网 http://www.w5500.cn/ W5500中文手册 iEthernet W5500 Datasheet 软件准备 需要安装好Keil - MDK及芯片对应的包,以

Mculover666的博客(嵌入式) 7388

关于ViewPager、ViewFilpper、ViewFlow,Gallery四种实现水平滑动方式的比较

ViewPager ViewPager类提供了多界面切换的新效果。新效果有如下特征: [1] 当前显示一组界面中的其中一个界面。 [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。 [3] 滑动结束后,界面自动跳转到当前选择的界面中   ViewPager来源于google 的补充组件android-support-v4.jar,位置在androidSDK文

人生起落,生活苦甜,坚持追求! 2023

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android入门/Gallery(十三)

公共类 Gallery extends AbsSpinner implements  GestureDetector.OnGestureListener java.lang.Object的    ↳ android.view.View      ↳ android.view.ViewGroup

幺鹿 1365

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ViewPage嵌套ListView,嵌套Gallery 滑动冲突

首先项目需求是, 1.有左滑出现点击登录界面,用sliderMenu框架实现  2.新闻内容用ViewPage实现  3.在ViewPage中加载新闻片段Fragment 4.Fragment布局是一个带有上拉刷新,下拉下载的PullToRefresh ListView 5.ListView 里面有一个特殊第一项 拉取新闻广告位,用Gallery控件实现 问题:这么多滑动控件,

1.01的365次方的专栏 1195

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Pro Android学习笔记(二一):用户界面和控制(9):Gallery和SimpleAdapter

Gallery画廊式控件,如图所示,但是在API level 16,也即Android 4.1,被deprecated,可以使用HorizontableScroolView和ViewPager。但是后来者都不是AdapterView,所有我们仍快速地略过Gallery,也顺带学习一下SimpleAdapter。 XML layout文件如下: xmlns:android="http:

愷风(Wei)的专栏 3641

Android开源项目第一篇——个性化控件(View)篇

本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditText、TableView、Activi...

weixin_33875839的博客 117

【转】 Pro Android学习笔记(二一):用户界面和控制(9):Gallery和SimpleAdapter...

Gallery画廊式控件,如图所示,但是在API level 16,也即Android 4.1,被deprecated,可以使用HorizontableScroolView和ViewPager。但是后来者都不是AdapterView,所有我们仍快速地略过Gallery,也顺带学习一下SimpleAdapter。 XML layout文件如下: <?xml version="1.0" en...

weixin_30823227的博客 95
上一篇: 9.高级控件(三)之 RecyclerView
下一篇: 12.在Activity页面之间传递数据
_北冥有鱼_
博客等级 码龄10年 41粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值