首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发笔记(四十二)Broadcast的生命周期

,代码示例如下: //注册接收器 LocalBroadcastManager.getInstance(this).registerReceiver(guestReceiver, filter); //注销接收器...它与静态注册的区别在于:静态注册的receiver代码是单独的java文件,而嵌套注册的receiver代码是嵌入在某个java类中,所以注册时要在receiver类名前加上“属主类名$”。...另外,嵌套注册的receiver类在定义时也要加上static标记,这样才能正常访问。...MainActivity.this, "您的客人是"+guest, Toast.LENGTH_LONG).show(); } } } 注意上面在注册广播时使用了...Tab标签页的点击事件需要注册监听器TabListener,在onTabSelected方法中指定当前的ViewPager页面;同样ViewPager的翻页事件也需注册监听器OnPageChangeListener

1.9K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 自定义 ViewPager 打造千变万化的图片切换效果

    ,嘿嘿~~其实很简单,学习完这篇博客,保证你可以自定义切换效果,做出各种丧心病狂的切换~~ 1、制作前的分析 观察下效果图,实际上改变的就是切换时的动画,那么简单了,只需要用户在切换时,拿到当前的View...好,第一步,获取用户切换时的当前View和切换至的目的View。 我们在来看一下,如果或者了当前View和目的View,对于动画我们需要缓慢的变化,最好是根据用户的手势滑动。...比如上述效果,用户滑动时,目的图片根据用户滑动距离缓缓出现和慢慢变大。好,第二步,设计动画的梯度变化。...经过分析,我们总结出两个步骤,下面我们开始一步一步来打造~~~ 2、获取用户切换时当前View和切换至的目的View。 ViewPager也需要监听用户的手势,所以肯定提供了某个方法。...-1)获得滑动时,左右的两个View;乍一看,还真觉得不错~~~在代码写出来,再乍效果也出不来~~错误原因:我们忽略一个特别大的东西,ViewPager的机制,滑动时动态加载和删除View,ViewPager

    53110

    一文解决Android View滑动冲突

    有小伙伴肯定有疑问,ViewPager带ListView并没有出现滑动冲突啊。 那是因为ViewPager已经为我们处理了滑动冲突!...ViewPager当斜率小于0.5时判断为横向滑动,拦截事件 有兴趣的小伙伴可以看ViewPager源码分析:滑动及冲突处理(http://blog.csdn.net/huachao1001/article...它的处理逻辑也很明显,根据用户滑动的位置来判断到底是那个View需要响应滑动。 上述两种滑动冲突的场景区别只是在于拦截的逻辑处理上。...我们一开始说过ViewPager已经默认给我们处理了滑动冲突,而它作为ViewGroup使用的是外部拦截法解决的冲突,即在onInterceptTouchEvent方法中进行判断的。...假如mActivePointerId不进行初始化,ViewPager会认为这个事件已经被子View给消费了,然后break掉,接下来的滑动操作也就不执行了。 ?

    1.8K30

    Android 打造一个丝滑的自动轮播控件

    那 ViewPager 跟我们需要的自动轮播控件有多少差距呢,主要有两个: 不支持自动播放 无法从最后一张滑动到第一张 所以我们主要是针对这两部分进行相应的改造,从而实现我们自己的自动轮播控件。...position 的数据,但是如果通过定时器来实现的话,会有一个问题,那就是我们在需要让 banner 进行停止播放的时候就比较麻烦,所以通过 Handler 用 sendMessage 的形式,进行事件的发送实现...1.2 让 ViewPager 从最后一张滑动到第一张 我们知道,ViewPager 是无法从最后一页滑动到第一页的,但我们可以换一个思路,如果我们在 ViewPager 的 Adapter 里面,通过...= new SimpleDraweeView(GlobalContext.getContext()); } else { // 当缓存集合有数据时,...切换速度 原生的 ViewPager 在进行自动轮播的时候,切换速度是特别快的,会给人一种很突兀的感觉,而且 ViewPager 也没有提供接口给我们对 ViewPager 进行切换速度的设置,所以我们需要通过反射的方式

    52720

    滑动冲突的两种解决方法

    当ViewTree中从根到某一叶子节点的路径上,存在多个可接受滑动手势的控件时,就有可能发生滑动冲突。...滑动阈值 事件流经父控件时,父控件不对事件做拦截操作,但时刻计算用户的滑动方向和距离,一旦用户的滑动方向与自己可滑动的方向夹角小于一定程度,并且滑动距离超过一个阈值,同时子控件没有禁止父控件拦截的情况下...clickable的View,默认就会吃全部事件,也就是说,如果父控件不拦截滑动事件,那么当用户手指落在按钮上开始滑动时,父控件永远收不到事件。...这种想法还是忽略了一个问题,用户滑动的距离并不是一个从0开始平滑增长的值,而是一系列离散的数,用户的两个touch时间之间的距离,是可能突然变得很大的,比如一上来距离就达到了40,假如父控件的阈值是30...最典型的例子就是ViewPager,我们知道多个ViewPager嵌套是不会有滑动冲突的,并且还能在子ViewPager无法滑动时,改为滑动父ViewPager,它的原理就是使用View.canScrollHorizontally

    13310

    探秘Android手势事件机制与优化技巧

    运动事件包括两种类型:滚动(SCROLL)和长按(LONG_PRESS)。 手势事件的分发机制 当用户进行手势操作时,Android系统会将手势事件分发给当前活动的View或ViewGroup。...手势事件的处理流程 当手势事件被分发给当前活动的View或ViewGroup时,它们会按照以下流程进行处理: 如果当前活动的View或ViewGroup没有子View,则直接处理该事件。...优化用户体验的技巧 除了理解Android手势事件传递的原理,还需要根据具体的应用场景和需求,合理地处理手势事件,以优化用户体验。...以下是一些技巧: 灵敏度调整:可以根据用户的手势习惯,调整手势事件的灵敏度,以提高用户的操作体验。 反馈机制:在用户进行手势操作时,可以通过震动、声音等方式给予用户反馈,以增加用户的操作感知。...在主Activity中,通过设置ViewPager的setOnTouchListener,监听用户的手势滑动事件,并根据事件的滑动距离,计算出菜单的伸缩比例,然后根据该比例修改菜单的大小。

    34940

    Android View滑动冲突全面解析-夯实基础

    如图,对于场景1,它的处理规则是:当用户左右滑动时,需要让外部的View 拦截点击事件,当用户上下滑动时,需要让内部View 拦截点击事件。...这个时候我们就可以根据它们的特征来解决滑动冲突,具体来说:根据滑动时水平滑动还时竖直滑动来判断到底谁来拦截事件。 如图所示,根据滑动过程中两个点之间的坐标就可以得出到底是水平滑动还时竖直滑动。...对于场景2来说,无法根据滑动的角度,距离差以及速度差来做判断,但是这个时候一般都能在业务上找到突破点,比如说,在某些状态下,外部View响应用户滑动,而处于另一种滑动时则需要内部View来响应View的滑动...如果mActivePointerId 不进行初始化,ViewPager会认为这个事件已经被子View 消费掉,然后直接break,接下来的滑动也就不会再执行。...* 要不然当 子view requestDisallowInterceptTouchEvent(false)时将无法拦截事件列的其余事件 * @param ev * @return

    46220

    ViewPager源码分析

    分析一个自定义ViewGroup的源码,一般可以从以下3个方面入手: 1. 自定义ViewGroup对自己以及子View的宽高限制规则,即onMeasure方法。 2....1.jpg 先看down事件,第一部分是初始化触摸坐标和相关变量,比较简单;第二部分是当ViewPager处于SCROLL_STATE_SETTLING(快要滑到最终位置)时,先停止其滚动...1.jpg        move事件主要做两件事,第一件事是当mIsBeingDragged为false时,重新检测一下当前是否符合左右滑动的条件(mIsBeingDragged为false时为啥会回调...1.jpg 再来看up事件,主要就做一件事,就是根据松手时当前滑动的位置,计算出最终要切换到哪个item,最终调用setCurrentItemInternal进行切换,而且带动画。        ...直接断点addView调试一下,调用堆栈如下: 1.jpg 从堆栈可以看出,起始方法是ViewPager的populate方法(第一部分讲onMeasure提到的那个方法),中间经过FragmentManager

    1.8K40

    仿抖音上下滑动分页视频

    不太建议使用ViewPager 1.ViewPager 自带的滑动效果完全满足场景,而且支持Fragment和View等UI绑定,只要对布局和触摸事件部分作一些修改,就可以把横向的 ViewPager...2.滑动事件处理比viewPager好,即使你外层嵌套了下拉刷新上拉加载的布局,也不影响后期事件冲突处理,详细可以看demo案例。...这个方法调用是在MotionEvent.ACTION_UP这个事件下,先说下参数意思: - currentPage:当前ViewPager显示的页面 - pageOffset:用户滑动的页面偏移量...分析得出:0.6f表示用户滑动能够翻页的偏移量,所以不难理解,为啥要滑动半屏或者以上了。也可以修改Touch事件控制ViewPager的Touch事件,这个基本是万能的,毕竟是从根源上入手的。...从后台切换到前台,当视频暂停时或者缓冲暂停时,调用该方法重新开启视频播放。

    5.9K20

    首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment

    - 定义 Fragment是activity的界面中的一部分或一种行为 1.把Fragment认为模块化的一段activity 2.它具有自己的生命周期,接收它自己的事件...例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。...作用 主要是为了支持更动态、更灵活的界面设计(从3.0开始引入) 具体使用请参考我写的另外一篇文章Android开发:Fragment介绍&使用方法解析 底部菜单栏实现步骤 在主xml布局里面定义一个.../*简单来说,是为了让ViewPager滑动的时候能够带着底部菜单联动*/ vp.addOnPageChangeListener(this);//设置页面切换时的监听器...定义具体实现的MainActivity 完整Demo下载地址 Carson_Ho的Github:Tab_menu_Demo 总结 本文对底部菜单栏进行了全面的实现,也讲解得非常详细,有不懂的可以直接在下面留言给我哦

    1.9K20

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    仔细看的话,图分为3层,从上往下依次是Activity、ViewGroup、View 事件从左上角那个白色箭头开始,由Activity的dispatchTouchEvent做分发 箭头的上面字代表方法返回值...解决思路 看了上面三种情况,我们知道他们的共同特点是父View 和子View都想争着响应我们的触摸事件,但遗憾的是我们的触摸事件 同一时刻只能被某一个View或者ViewGroup拦截消费,所以就产生了滑动冲突...那既然同一时刻只能由某一个View或者ViewGroup消费拦截,那我们就只需要 决定在某个时刻由这个 View 或者 ViewGroup 拦截事件,另外的 某个时刻由 另外一个 View 或者 ViewGroup...导致的滑动冲突 外部解决法 如上面所述,从 父View ScrollView着手,重写 OnInterceptTouchEvent方法,在上下滑动的时候拦截事件,在左右滑动的时候不拦截事件,返回 false...抢占焦点,在某些情况下用户体验不好,才写出来的,跟这篇博客要讲解的View滑动事件冲突没有多大关系,只是给读者提供多种思路而已 至于CoordinatorLayout,是google IO 2015中提出来的

    5.8K51
    领券