viewpager

Android开源中国客户端学习 (自定义View)左右滑动控件ScrollLayout <11>

二次信任 提交于 2019-12-06 14:11:25
左右滑动的控件我们使用的也是非常多了,但是基本上都是使用的viewpager 等 android基础的控件,那么我们有么有考虑过查看他的源码进行定制呢?当然,如果你自我感觉非常好的话可以自己定制一个,osc的ScrollLayout就是自己定义的View 和Viewpager的区别还是不小的 代码不是很多不到300行,但是却实现了左右滑动页面的效果,还是值得学习的.效果如下: 我们看到ScrollLayout直接继承了ViewGroup然后自定义了一系列功能,那么接下来就分析一下: 我们知道ViewGroup的绘制流程基本分为onMeasure ,onLayout ,onDraw三部分 那么就首先看onMeasure @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //Log.e(TAG, "onMeasure"); super.onMeasure(widthMeasureSpec, heightMeasureSpec); final int width = MeasureSpec.getSize(widthMeasureSpec); final int widthMode = MeasureSpec.getMode(widthMeasureSpec); if

android ViewPager

天涯浪子 提交于 2019-12-06 10:40:12
ViewPager类提供了多界面切换的新效果。新效果有如下特征: [1] 当前显示一组界面中的其中一个界面。 [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。 [3]滑动结束后,界面自动跳转到当前选择的界面中 ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“android-support-v4.jar” <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" >

Android ViewPager和ScrollView嵌套滚动问题解决方案

自作多情 提交于 2019-12-06 08:56:55
问题描述: 我的嵌套是ViewPager-->ScrollView-->ViewPager. 首先最里面的ViewPager水平滚动时总是会触发最外层的ViewPager滚动,看了网上很多的解决办法基本上是一样的,需要自定义ViewPager。 import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; /** * 自定义ViewPager,解决ViewPagger嵌套使用时不滑动问题。 * Created by Administrator on 2015/4/20. */ public class HorizontalInnerViewPager extends ViewPager { /** 触摸时按下的点 **/ PointF downP = new PointF(); /** 触摸时当前的点 **/ PointF curP = new PointF(); public HorizontalInnerViewPager(Context context, AttributeSet attrs) {

ViewPager设置切换动画

我的未来我决定 提交于 2019-12-06 03:33:12
在原生的ViewPager切换时会显的很突然很生硬,百度了许多前辈的案例,思路都差不多,那就是先写一个继承Scroller的类SpeedScroller package com.youhe.yoyo.addforlu; import android.content.Context; import android.view.animation.Interpolator; import android.widget.Scroller; /** * Created by abc on 2016/12/1. */ public class SpeedScroller extends Scroller { private int mDuration = 1000; public SpeedScroller(Context context) { super(context); } public SpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { // Ignore received

仿微信点击图片放大,并可滑动浏览效果

南笙酒味 提交于 2019-12-06 03:27:43
前言   我们在微信朋友圈看别人发的带图片说说时,点击某张图片,会放大全屏显示,并且左右滑动可以切换浏览多张图片。   这种效果应用场景很多,尤其是购物和餐饮类app很常见。比如点餐软件,一般会向顾客使用列表方式整体展示所有菜品的缩略图、价格、原料、做法、营养功效、食客评价等,由于缩略图提供的直观信息不全不清晰,顾客还可以点击缩略图进一步查看菜品的多张实拍大图,效果就是点击缩略图弹出大图,左右滑动切换图片,屏幕底部小圆点指示当前图片索引,然后点击大图,大图消失会弹回去,回到缩略图界面。   购物类app如淘宝在用户选择商品时,一般会点击商品缩略图,全屏展示商品多张高清实物图,也可以滑动浏览,点击实物图,又会回到之前页面。   此时,我们可能会琢磨这种效果该如何实现。其实并不难,使用ViewPager配合Activity一些特性,再加上必要的过渡动画即可完成。 具体实现流程 一、定义一个专门用来显示弹出大图的Activity   因为图片要全屏展示,所以我们要在onCreate生命周期的方法里加上这样一句 // 设置为全屏 getWindow ( ) . setFlags ( WindowManager . LayoutParams . FLAG_FULLSCREEN , WindowManager . LayoutParams . FLAG_FULLSCREEN ) ; 注意

仿微信底部栏图标切换时,颜色渐变效果

拈花ヽ惹草 提交于 2019-12-06 03:23:46
前言   使用微信时,我们会发现:进行页面切换时,底部标题栏的图片会发生颜色深浅的变化。   本文将介绍这种效果是如何实现的,最终效果如图1所示。 知识点    ArgbEvaluator.evaluate方法:   该方法用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色。    DrawableCompat.setTintList方法:   通过该方法,可以动态地给图片进行着色处理。对于具体的用法,可以参考一下文章: http://www.jianshu.com/p/6bd7dd1cd491  本文不再讲述。 准备工作   我们创建一个Demo。Activity中包含一个ViewPager控件,并利用LinearLayout实现底部标题栏。   布局代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match

底部导航栏实现方式多样化

邮差的信 提交于 2019-12-06 03:19:00
前沿 距Google I/O(2014)最新发布的Material Design Android 设计风格已经有一段时间了, 2016年Google在 Android Design Support Library 25 基础上增加了 一个BottomNavigationView 新控件, 相比之前实现导航栏的方式,如LinearLayout + TextView(使用android:drawableTop属性+selector状态切换)、 LinearLayout + RelativeLayout(TextView+ImageView) RadioGroup + RadioButton,2015年Google推出的兼容包Android Design Support Library中的TabLayout等 该控件提供更简洁的方式实现功能模块导航,符合材料设计规范, 效果图如下: BottomNavigationView 继承自 FrameLayout 对外暴露了OnNavigationItemSelectedListener接口,便于对子视图点击事件的处理,可以通过此接口动态 改变文字颜色 图标颜色; 在XML需要了解其以下属性 (记得添加 xmlns:app="http://schemas.android.com/apk/res-auto") app:itemIconTint :

点击导航栏切换页面的几种方式

只谈情不闲聊 提交于 2019-12-06 03:17:08
最近比较流行tablayout+viewpager+fragment的点击导航栏实现页面切换的效果,可以参考: http://blog.csdn.net/qq_33425116/article/details/52599818#t5 我在这里介绍的都是比较原始的切换做法。 RedioGroup+Fragement(推荐) 运行效果: 写布局文件: 示例RadioButton: <RadioButton android:id="@+id/rb_home" style="@style/tab_style" android:checked="true" android:drawableTop="@drawable/bar_home_bg" android:text="主页" /> 样式文件tab_style: <style name="tab_style"> <item name="android:layout_width">0dip</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_gravity">center_vertical</item> <item name="android:layout_weight">1</item> <item name=

高级UI晋升之常用View(三)中篇

安稳与你 提交于 2019-12-06 00:13:59
更多Android高级架构进阶视频学习请点击: https://space.bilibili.com/474380680 本篇文章将从ViewPager来介绍常用View: 文章目录 一、简介 二、基本使用 xml引用 page布局 创建适配器 设置适配器 标题栏 5.1. xml引用 5.2. 重写PagerAdapter的getTitle()方法 翻页动画 6.1. DepthPageTransformer 6.2. ZoomOutPageTransformer 6.3. 自定义动画 6.4. 开源框架ViewPagerTransforms 翻页监听 7.1. 设置方法 7.2. 翻页监听接口 7.3. 重写方法 7.4. 使用 三、与Fragment结合使用 创建Fragment及相应的xml布局 给Viewpager设置数据和适配器 四、实现轮播图效果 特点 使用介绍 2.1. 导包 + 权限 2.2. xml引用 2.3. 创建图片加载器 2.4. 设置数据 五、实现画廊效果 viewpager布局 pager布局 Adapter vp设置adapter 问题 一、简介 Viewpager,视图翻页工具,提供了多页面切换的效果。Android 3.0后引入的一个UI控件,位于v4包中。低版本使用需要导入v4包,但是现在我们开发的APP一般不再兼容3.0及以下的系统版本

ViewPager,PagerAdapter总结

筅森魡賤 提交于 2019-12-05 23:33:43
在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我调用 notifyDataSetChanged() 后,发现什么都没发生。 搜索之后发现不止我一个人碰到这个问题,大家给出的解决办法五花八门,有些确实解决了问题,但是我总感觉问题没搞清楚。于是我决定搞明白这个问题到底是怎么回事,以及正确的用法到底如何。要搞明白这个问题,仅仅阅读文档并不足够,还需要阅读相关几个类的相关方法的实现,搞懂其设计意图。下面就是通过阅读源代码搞明白的内容。 【ViewPager】 ViewPager 如其名所述,是负责翻页的一个 View。准确说是一个 ViewGroup,包含多个 View 页,在手指横向滑动屏幕时,其负责对 View 进行切换。为了生成这些 View 页,需要提供一个 PagerAdapter 来进行和数据绑定以及生成最终的 View 页。 setAdapter() ViewPager 通过 setAdapter() 来建立与 PagerAdapter 的联系。这个联系是双向的,一方面