仿淘宝Banner:左右滑动ViewPager+最后一张滑动查看详情
手机淘宝上能够看出来这个效果,在产品图片Banner上滑动的时候, 滑动到最后
一页的时候可以跳转详情,其实也就是给其最后一页跳转监听,并且实现页面跳转。
效果图如下:
主要使用了ViewPager+CirclePageIndicator,实现代码如下:bannerlayout.xml
<LinearLayout
android:layout_width="match_parent"android:layout_height="144dp"android:orientation="horizontal"><LinearLayout
android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"><RelativeLayout
android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"><android.support.v4.view.ViewPager
android:id="@+id/viewpager_banner"android:layout_width="match_parent"android:layout_height="match_parent"/><com.viewpagerindicator.CirclePageIndicator
android:id="@+id/circle_indicator"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:padding="10dp"/></RelativeLayout></LinearLayout><LinearLayout
android:id="@+id/ll_lookDetail"android:layout_width="43dp"android:layout_height="match_parent"android:background="#eff1f3"android:gravity="center_vertical"android:orientation="horizontal"android:visibility="gone"><ImageView
android:layout_width="15dp"android:layout_height="15dp"android:src="@drawable/asset_img_look_icon"/><TextView
android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="3dp"android:text="释\n放\n查\n看\n更\n多"android:textColor="#2493e7"android:textSize="11sp"/></LinearLayout></LinearLayout>
其中Activity中的实现代码如下:
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.viewpagerindicator.CirclePageIndicator;public class AActivity implements ViewPager.OnPageChangeListener {private LinearLayout mLookDetail;private int[] mImageIds = new int[]{R.drawable.asset_detail_banner, R.drawable.ic_fx_banner, R.drawable.asset_detail_banner};private ArrayList<ImageView> mAssertImgList;private ViewPager mViewPagerBanner;private int currentPageScrollStatus;private int count = 0;private CirclePageIndicator mCircleIndicator;@Override@Overridepublic void onCreate(Bundle savedInstanceState) {setContentView(R.layout.bannerlayout);mLookDetail = (LinearLayout) findViewById(R.id.ll_lookDetail);mViewPagerBanner = (ViewPager) findViewById(R.id.viewpager_banner);mCircleIndicator = (CirclePageIndicator) findViewById(R.id.circle_indicator);mAssertImgList = new ArrayList<ImageView>();//设置banner图for (int i = 0; i < mImageIds.length; i++) {ImageView view = new ImageView(this);view.setBackgroundResource(mImageIds[i]);mAssertImgList.add(view);}mViewPagerBanner.setAdapter(new BannerAdapter(getApplicationContext(), mAssertImgList));mCircleIndicator.setViewPager(mViewPagerBanner);mCircleIndicator.setOnPageChangeListener(this);} @Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if (position == mImageIds.length - 1) {if (positionOffsetPixels == 0 && currentPageScrollStatus == 1) {//count的作用是判断是否是第一次滑动到最后一页,如果每次都需要跳入详情,需删除该变量if (count == 0) {mLookDetail.setVisibility(View.VISIBLE);startActivityn(new Intent(AActivity.this,BActivity.class));}//此处count也需要删除count++;}} else {mLookDetail.setVisibility(View.GONE);}}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {currentPageScrollStatus = state;}
}
其中Adapter实现如下:
public class BannerAdapter extends PagerAdapter {private Context context;private ArrayList<ImageView> mImgList;public BannerAdapter (Context context, ArrayList<ImageView> mGuideImgList) {this.context = context;this.mAssertImgList = mGuideImgList;}@Overridepublic int getCount() {return mImgList.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView imageView = mImgList.get(position);container.addView(imageView);return imageView;}
}
代码中可能会由于改动,命名有不同,用的时候可以改动一下喽!bénir
源码下载地址:https://github.com/blythe104/SlideBannerDemo
注:由于ViewPager中包含多张图片,在返回的时候可能需要多次注销,需要添加该活动的模式如下:
android:launchMode=”singleTop”
仿淘宝Banner:左右滑动ViewPager+最后一张滑动查看详情相关推荐
- Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...
- Android仿淘宝、京东Banner滑动查看图文详情
文章目录 写在前面 效果图 原理分析 核心代码 源码地址 写在前面 本文基于 ViewPager2 实现的 Banner 效果,进而实现了仿淘宝.京东Banner滑动至最后一页时继续滑动来查看图文详情 ...
- 仿淘宝商品详情-点击显示大图,可滑动
现在在做一个商城类的项目: 大家都用过淘宝,需求就是要求仿淘宝的效果做一个, 直接上图 用到了一个项目PhotoView 大家运行一下看最后一个项目,把单一的图片显示改成VIewpager就好.
- uniapp仿淘宝详情页页面滑动tab切换
uniapp仿淘宝详情页页面滑动tab切换 建立util文件夹放一个Tool.js: export default{getRect(selector){return new Promise((reso ...
- 自定义View之仿淘宝详情页
自定义View之仿淘宝详情页 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52353071 本文出自:[Alex_MaHao的博客] 项 ...
- iOS物理碰撞、唱吧音频处理、仿淘宝联动效果等源码
iOS精选源码 物理仿真 碰撞 陀螺仪 使用 仿淘宝详情和每日优鲜的一个联动效果 JJNetwork网络库 iOS列表选择弹框 网络视频直播类--原生socket音视频实时传输--智能家居 Skele ...
- HTML5响应式手机模板:电商网站设计——仿淘宝手机app界面模板源码 HTML+CSS+JavaScript...
HTML5响应式手机模板:电商网站设计--仿淘宝手机app界面模板源码 HTML+CSS+JavaScript 手机电商模板 手机网站模板 企业手机网站模板 手机网站模板 手机模板 响应式手机网站 h ...
- 基于BootStrap仿淘宝星星商品评价案例
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- 仿淘宝详情页 直接上代码
仿淘宝详情页 直接上代码 package com.example.liketitledemo;import android.content.Context; import android.graphi ...
- iOS物理碰撞、唱吧音频处理、仿淘宝联动效果等源码 1
iOS精选源码 物理仿真 碰撞 陀螺仪 使用 仿淘宝详情和每日优鲜的一个联动效果 JJNetwork网络库 iOS列表选择弹框 网络视频直播类–原生socket音视频实时传输–智能家居 Skeleto ...
最新文章
- 不写一行代码,也能玩转Kaggle竞赛?
- PaaS下半场,任重且道远
- Excel提取超链接信息
- python 搭建登陆系统_Django 搭建CMDB系统完整[1](用户登录)
- Java线程详解(13)-锁
- 获取打开文件的路径和文件名
- 谈谈软件工程设计的艺术
- 服务器小白-MYSQL基础安装配置
- c语言给定一个单链表输入k,C语言实现单链表(不带头结点)的基本操作
- JAVA读取属性文件的几种方法
- 每日算法系列【LeetCode 329】矩阵中的最长递增路径
- VMware:虚拟化技术为运营商消除隐患
- 读《Android群英传》的一些感想
- OpenCV开发笔记(四十四):红胖子8分钟带你深入了解霍夫圆变换(图文并茂+浅显易懂+程序源码)
- SFFAI分享 | 张杰:针对图像处理网络的模型水印【附PPT与视频资料】
- Android内嵌H5,安卓手机返回键点击无反应、苹果手机返回键正常情况解决方案
- 操作系统实验:添加系统调用修改主机名(hostname)
- uniapp踩坑系列之二
- 如何做好 OSPO,推动企业开源丨雨林开源行
- 802协议族太网帧格式