上面历史环境一栏这个是实现后的效果图,可以横向滑动的listView 核心代码类HorizontalListView: package com.example.horizontallistviewdemo...; import android.content.Context; import android.database.DataSetObserver; import android.graphics.Rect...; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener...; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; import...="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
Toast.LENGTH_SHORT).show(); return true; } }); 这样就可以了 Child 的点击事件那就比较简单了,直接和ImageView的点击事件一样处理,或者直接写死了,Child是横向的...” android:gravity=”center” android:padding=”4dp” android:text=”进入” android:textColor=”@color/white” android...android:focusable=”true” android:gravity=”center” android:padding=”4dp” android:text=”查看” android:textColor...” android:enabled=”true” android:focusable=”true” android:gravity=”center” android:padding=”4dp” android...:clickable=”true” android:enabled=”true” android:focusable=”true” android:gravity=”center” android:padding
大家看上面的分类栏,我们这个分类数目不固定,要求可以一个一个横向滑动。不是viewPager分页 一屏幕放4个,一滑动一下子显示下一页的4个。当然这种效果一般都是用viewPager实现。...这个横向的列表之前的博客已经写过了用的HorizontalListView,所以这个横向滑动列表的实现 我就不再写一次了 ,感兴趣的可以直接看这篇文章 Android 横向ListView实现 但是用这个实现了列表后...,发现这个效果对用户来讲不是特别友好,因为可能一部分用户不知道那个列表是滑动的,所以特意在下面加了两个小圆点 这两个小圆点的添加方式就是监听 横向列表的onTouch事件 mDocumentCategoryHlv.setOnTouchListener
应用禁用通知栏下拉这个需求让我头疼了好几天 statusbar用了后但是效果不是很满意 其他的方法试过但是没有效果,所以就换个思路吧 做法是在通知栏区域弄一个透明的window,这样下拉的时候触摸的区域就是这个...window,系统的就下拉不了了 该做法是需要在应用上方显示一个window 所以需要权限 android:name="android.permission.SYSTEM_ALERT_WINDOW...status_bar_height"; public static final String DIMEN = "dimen"; public static final String DEF_PACKAGE = "android
> android="http://schemas.android.com/apk/res/android"> android:id="@android:id/background"> android...android:radius="0dp" /> <gradient android:endColor="@color...="match_parent" android:layout_height="2dp" android:layout_below="@id/id_head_bar"...android:max="100" android:progressDrawable="@drawable/progressbar_bg" />
Android默认打开飞行模式时会关闭蓝牙和WiFi,不会关闭NFC。...但是在飞行模式下还可以手动打开WiFi和蓝牙,控制这个的参数就是airplane_mode_toggleable_radios,所以我们把这个参数里的NFC去掉,那么开启飞行模式就禁用NFC了,手动也无法再次打开.../packages/apps/Settings/src/com/android/settings/nfc/NfcPreferenceController.java public static boolean...从代码中可以看到,airplaneMode 是当前飞行模式的状态,当飞行模式开启时,值为1,toggleable 就是false,这时就会关闭NFC,并且把NFC的按钮置灰,设为不可用。.../packages/apps/Settings/src/com/android/settings/nfc/NfcEnabler.java protected void handleNfcStateChanged
信息: Android P(禁用非官方API)目前类似的消息此起彼伏,关于国外移动开发者社区 XDA 的活跃者们在 AOSP(Android 开放源代码项目)的代码提交记录中的发现。...下载地址如下: https://developer.android.com/preview/download.html 刷完包之后迫不及待的测试了非官方禁用API,测试结果和大家猜测的一样...看点 01 禁用非官方API原因 关于为何要减少非官方接口,提高应用稳定性,在2018年2月28日,Google官方有此类声明:原文地址: https://android-developers.googleblog.com...看点 04 实际测试 有了以上大google的威逼利诱,以及各种模式下对非官方API的限制,我们来实际的测试下: 举个例子,拿 android.net.wifi 包里面的...亲爱的开发者们,Android官方禁用非官方API已经从Android N到Android P有了比较实质的进展,为构建稳定和谐的Android使用环境,大Google也一直努力着。
警告:Android P(禁用非官方API) ? ? 1 Health 李俊涛 京东前台产品研发部-资深Android工程师 看雪论坛 Android安全小组成员 ? 前言 1....信息: Android P(禁用非官方API)目前类似的消息此起彼伏,关于国外移动开发者社区 XDA 的活跃者们在 AOSP(Android 开放源代码项目)的代码提交记录中的发现。...刷完包之后迫不及待的测试了非官方禁用API,测试结果和大家猜测的一样,Android p会给大家弹出toast告知禁止使用非官方API,具体内容请参考:co/dev/appcompat,最终的链接地址为...看点 04 实际测试 有了以上大google的威逼利诱,以及各种模式下对非官方API的限制,我们来实际的测试下: 举个例子,拿 android.net.wifi 包里面的...亲爱的开发者们,Android官方禁用非官方API已经从Android N到Android P有了比较实质的进展,为构建稳定和谐的Android使用环境,大Google也一直努力着。
> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height...> android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com...android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height...; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList
Android 9.0 飞行模式下禁用NFC 功能实现以及问题解决 按照之前的方案修改代码以后,发现会有俩个问题,之前方案可以看我上面链接。...2、如果一直在NFC界面,关闭飞行模式前NFC是关闭的,开关一次飞行模式,NFC会打开。...WiFi和BlueTooth都是支持开启飞行模式时关闭功能,退出飞行模式时恢复WiFi和BlueTooth的原有状态。...但是因为Google原来就不支持开启飞行模式时禁用NFC,所以也没有相关代码,只能我们自己实现。.../frameworks/base/core/java/android/net/ConnectivityManager.java private NfcAdapter mAdapter; static final
谷歌已经悄悄地向其 Android 操作系统推出了一项新功能,允许用户在手机的调制解调器级别选择性地禁用 2G。...谁可以禁用2G? 目前,只有最新的 Android 机型可以选择禁用 2G。这些用户现在可以通过转到设置 > 网络和 Internet > SIMs > 允许 2G并关闭该设置来禁用 2G。...在较旧的 Android 手机上,这些步骤可能有效,也可能无效。不幸的是,由于旧硬件的限制,谷歌只能在较新的手机上实现此功能。...但他们至少应该为那些不依赖它的用户提供禁用 2G 的选项。第一步已经完成,让我们继续前进。 大家注意安全!
概述 由于项目需要,我们需要一个 可以横向滚动的,又可以竖向滚动的 表格。而且又要考虑大数据量(行)的展示视图。经过几天的研究终于搞定,做了一个演示。 效果图: !...我写了一个 HorizontalScrollView的子类,重载 onScrollChanged 方法,该方法在 滚动之后执行,相当于“滚动后的事件”,我写了一个观察者(设计模式)的类。
欢迎点击“AntDream”关注 在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?...和我一起跟着《Android源码设计模式解析与实战》一书边学边应用吧! 今天我们要讲的是装饰模式(包装模式) 定义 动态的给一个对象添加一些额外的职责。...就增加功能来说,装饰模式比生成子类更为灵活 使用场景 需要透明且动态地扩展类的功能时 使用例子 Android源码中的ContextWrapper 实现 四大角色 抽象组件:可以是抽象类或接口,是被装饰类的原始对象...,装饰模式主要在于扩展了类的功能。...装饰模式通过在被装饰组件的方法执行之前或之后加入新的方法来实现功能的扩展 装饰模式和代理模式的区别 装饰模式是对客户端以透明的方式扩展对象的功能,是继承关系的一种替代;而代理模式则是给一个对象提供一个代理对象
这个特别简单,一说就懂的,部分-整体模式 文件目录就采用了组合模式,很典型的一个例子,一个文件夹下面有文件和子文件夹,子文件夹下面又含有文件和子文件夹, 在android中最典型的例子就是视图模型: mDcorview... 下面有view ,viewGroup;viewGroup下面又含有view,view,ViewGroup 下面的图非常的直观,典型的组合模式 ?
通常对于光通信用的激光器,波导设计用来实现单一横向模式。通过调节包覆层周围区域的厚度、脊型波导器件中脊形的刻蚀深度等,从而得到单模器件。...DFB激光是使用周期光栅制备单模激光器,这是基于有效折射率来反射单一波长,不同横向模式具有不同的有效折射率,因此具有DFB光栅的多模波导可以有一个以上的波长输出。...光学模式成为“增益导向”以及折射率导向,而不需要真正精确的光学截止设计,这种增益导向的趋势是偏向单一模式的传播。实践中,根据折射率分布计算的远场和模式结构细节,可能与制造器件的测量值有显著不同。...作为波导, 半导体激光器将同时支持TE和TM模式,TE是横向电场,TM是横向磁场。但是在半导体量子阱激光器中,发射的光主要是TE极化。...这是基于腔面处,TE和TM模式的反射系数不同,而且大多数激光器都本征的高度极化。 对于TE和TM模式,只有某些离散的角度可以成为导引模式,从而沿波导传播。
这个模式理解也非常的简单,就是将军命令指挥官领导士兵打仗 请求和执行分开, 在ANDROID系统中命令模式用的也比较多,如在事件输入系统中,在InputDispatcher对象转发事件过程中就采用了命令模式...相关模式类图如下: ?
核心思想就是:当对象的状态改变时,同时改变其行为 android中使用状态模式的例子比较多,WIFI,蓝牙,网络连接等状态管理, 如在WIFI管理方面,就提供了: WifiStateMachine、...每个状态机对象在状态模式中起到Context作用,用来汇聚相关状态,启动状态执行等。 ...ANDROID系统中每个状态机管理的状态都派生自State类,State类是IState接口的实现。 WifiApConfigStore管理的状态图如下: ?
、程序、服务、资源等 其实这个时候有人就把这个 外观模式和 代理模式进行比较,因为都是 用户只和一人进行交互,至于你怎么实现的你不用告诉我, 代理模式模式中,说到了租房子这件事,租客只跟中介(..., 也就是说:当代理类有很多代理的时候(持有很多原有对象),就变成了外观模式了(外观类) 外观模式还有一种情况就是:那个音乐播放的例子,其实音乐就是一个抽象,但是有很多音乐实例,顺序播放和循环播放,以及单曲播放...,用户只与外观模式打交道,这里面的外观模式就是客户端的主类了,顺序播放就是把map里面装着的所有music调用play()就行了,随机播放就是while循环(true死循环),随机选择一个数对应的music...你也可以说我持有 客户端这个代理模式,分别调用不同的播放,不就行了, 所以我觉得代理模式和外观模式应该是一个东西了,都不需要传递参数,只是外观模式从更细的粒度上把所有的源对象都给搞出来了,封装成一个接口给你调用就可以了...说了这么多,Android中外观模式的使用也是非常的广泛的, 1.系统服务管理类,就是一个外观模式类,比如:窗口管理服务类,windowManager,InputManager,activityManager
其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?...根据上文的阐述,代理模式就比较容易的理解了,我们看下代码: public interface Sourceable { public void method(); } public ... ,这个已经理解了,这个实例一般是作为成员变量存在于代理类中的,它有个特点就是不需要你赋值,直接调用全局变量,或者构造函数里面不需要传递这个参数进去,它可以直接new的这种特性,一般都是属于代理模式...android中的具体应用:WindowManagerImpl就是一个代理类 public final class WindowManagerImpl implements WindowManager...,其实我们实际代码中很多方法都是使用了代理模式, 它的优点就是:持有代理对象,我只关心我需要的方法,很多方法用户并不知道,没有暴露出来。
欢迎点击“AntDream”关注 在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程中应用得得心应手呢?...和我一起跟着《Android源码设计模式解析与实战》一书边学边应用吧!...今天我们要讲的是代理模式(委托模式) 定义 为其他对象提供一种代理以控制对这个对象的访问 使用场景 当无法或不想直接访问某个对象或访问某个对象存在困难时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性...,委托对象与代理对象需要实现相同的接口 使用例子 Android源码中的ActivityManagerProxy代理ActivityManagerService类 实现 三大角色 抽象主题类:声明真实主题与代理的共同接口方法...总结 代理模式应用广泛,会经常和其他设计模式结合使用 代理模式是细分化至很小的一种设计模式,几乎没有缺点
领取专属 10元无门槛券
手把手带您无忧上云