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

Material Design 在 Android 中的应用

整体结构: 什么是 Material Design Material Desing的特点 从四个特点结合Android的应用剖析 在我的公司「口袋」项目中的应用 当然内容需要看官方的文档和其他资料加上总结才能完成...确实,技术分享本来的目的不就是为了让那些对分享主题不熟悉的人能有个大概的了解,能够从中收获到一些在自己领域中得到应用的技能,这就足够了。因此,在分享之前,自己要对分享的知识点有个充分的了解。...越读越能感受到它的妙处,假如你能严格按照它的规范进行开发项目,哪怕你不是专业的UI设计师,相信你的产品一定会不难看的。 那接下来就主要介绍一下Material Desing在Android中应用。。...窗口背景颜色 navigationBarColor 导航栏颜色 通过在styles中配置颜色来定制您的主题,并在AndroidManifest中应用。...Material Design 在「口袋」中的应用 其实在咱们的「口袋贵金属」项目中也到找到很多MD的元素。 首先是点击的水波纹效果: ? 其次是交易圈的滑动交互: ?

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

    Android中的通知和自定义通知布局

    Android中的通知(Notification)是Android中的重要一部分,应用程序通过通知来提醒用户或者向用户传达信息,下面让我们来看一下怎么在我们的程序中使用通知和自定义通知的布局。...由于各个版本的Android在通知方面都有一些改动,所以很难找到一个标准的创建及使用通知的方法,但是程序设计出来总归是给用户使用的,那么我们可以采用兼容性最好的那个API来创建通知:我们可以使用NotificationCompat...:label="第二个Activity"> 我们接着来看notifySecondNotification方法,在这个方法中我们实现的是一个自定义布局的通知,我们注意到在onCreate...言归正传,这个广播干什么用的呢:在自定义通知布局中我们要对两个按钮进行事件处理,在自定义通知布局中,我们必须使用RemoteViews的对象来对布局文件中的两个按钮进行事件处理,而 RemoteViews...,一般来说如果广播接收器的onReceive方法执行超过了10秒,系统就会认为这个应用没有响应。

    3.6K20

    Android 允许其他应用启动您的Activity

    你点击这个文件接受之后,微信是无法直接打开,这个时候会有一个其他应用打开的按钮,你点击这个按钮会出现一个弹窗,里面会列举出能够打开apk文件的应用。...你可以试试看将文件放到微信上去,看看能不能通过其他应用打开。 很明显,是不行的,那么怎么让你的应用能够支持打开这个文件呢?...> 这里乍一看好像都认识,又好像不认识,下面说明一下: 我们在微信、QQ、钉钉中通过其他应用打开文件,是不是就是Activity与Activity之间的交互呢?...格式来说,你就可以这样写:其他数据格式也是一样的,下面还是用, data中还有其他属性值,如下图所示: 我们从一个Activity传递到另一个Activity的Uri,Uri的构成是 :://...,这个是系统的,然后通过Uri的到此文件在微信应用中的路径和文件的名称。

    1.4K50

    Kotlin中的协程及在Android中的应用

    提前说一下async和launch的区别: async函数体中最后一行代码表达式运行结果会作为结果返回,也就是Deferred中的泛型T,我们可以通过其他协程函数获取到这个执行结果,而launch没有这样的返回值...IO 调度器中启动一个协程,但它们之间有一些区别: GlobalScope.launch(Dispatchers.IO){} 是在全局范围内启动一个协程,不受外部作用域的限制。...这意味着该协程的生命周期与应用程序的整个生命周期相关联,一般情况下不建议在生产代码中使用GlobalScope,因为它会使得协程的生命周期难于管理。...CoroutineScope(Dispatchers.IO).launch {} 是在指定的 CoroutineScope 中启动一个协程,通常情况下应该手动创建 CoroutineScope 对象,并确保在合适的时机取消该...比如:网络请求,数据库操作,文件操作等 Main:UI调度器,只有在UI编程平台上有意义,用于更新UI,例如Android中的主线程 Unconfined:非受限调度器,无所谓调度器,当前协程可以运行在任意线程上

    19010

    Android通知栏微技巧,8.0系统中通知栏的适配

    在上一篇文章当中,我们学习了Android 8.0系统应用图标的适配,还没有看过这篇文章的朋友可以先去阅读 Android应用图标微技巧,8.0系统中应用图标的适配 。...那么就目前来说,是没有办法对这些消息做区分的,我要么同意接受所有消息,要么就屏蔽所有消息,这是当前通知栏的痛点。 那么在Android 8.0系统中,Google也是从这个痛点开始下手的。...这里我们在MainActivity中创建了两个通知渠道,首先要确保的是当前手机的系统版本必须是Android 8.0系统或者更高,因为低版本的手机系统并没有通知渠道这个功能,不做系统版本检查的话会在低版本手机上造成崩溃...至于创建通知渠道的这部分代码,你可以写在MainActivity中,也可以写在Application中,实际上可以写在程序的任何位置,只需要保证在通知弹出之前调用就可以了。...比方说这是一条比较重要的通知,但是我暂时没时间看,也不想让它一直显示在状态栏里打扰我,我就可以让它延迟一段后时间再显示,这样我就暂时能够先将精力放在专注的事情上,等过会有时间了这条通知会再次显示出来,我不会错过任何信息

    2.9K40

    Linux 内核监控在 Android 攻防中的应用

    因此,我们不应该在应用层上和加固厂商做对抗,而是寻找其他突破点,以四两拨千斤的方式实现目的。...值得一提的是,最近几年 Linux 内核出过很多 eBPF 的漏洞,大多是 verifier 的验证逻辑错误,其中不少还上了 Pwn2Own,但是由于权限的限制在 Android 中普通应用无法执行 bpf...在 Android 中还没有官方的支持,不过有一些开源的 systemtap 移植。...一般是通过应用名去过滤系统调用,但是在 Android 中还有个特别的过滤方式就是通过用户 ID,因为应用是根据动态安装获取的 UID 去进行沙盒隔离的。...除了 exec,我们还可以跟踪其他内核函数,比如 root 检测经常用到的 openat 或 access,如下所示: img-su 基于内核级别的监控,让应用中所有的加固/隐藏/内联汇编等防御措施形同虚设

    3.2K30

    ART 在 Android 安全攻防中的应用

    在日常的 Android 应用安全分析中,经常会遇到一些对抗,比如目标应用加壳、混淆、加固,需要进行脱壳还原;又或者会有针对常用注入工具的检测,比如 frida、Xposed 等,这时候也会想知道这些工具的核心原理以及是否自己可以实现...在 Android 12 应用启动流程分析 一文中我们说到,APP 应用进程实际上是通过 zygote 进程 fork 出来的。...提前优化 在我们使用 Android-Studio 编译应用时,实际上是通过 Java 编译器先将 .java 代码编译为对应的 Java 字节码,即 .class 类文件;然后用 dx(在新版本中是d8...正所谓无利不起早,之所以花费这么多时间精力去学习 ART,是因为其在 Android 运行过程中起着举足轻重的作用,下面就列举一些常见的应用场景。...这对于很多想在代码中隐藏秘密的公司而言是很不愿意看到的。

    1.3K10

    面向切面编程(AOP)在Android中的应用

    可以这么理解,在Android开发过程中,我们经常会在我们的具体业务代码中加入全局性、系统性的与具体业务无关的代码。比如埋点、动态申请权限等等。...更直白点 我们的Android项目引用也非常的简单,2步就可以搞定: 在项目的根目录的Build.gradle文件中加入下面的代码: 1dependencies { 2 classpath 'com.hujiang.aspectjx...:gradle-android-plugin-aspectjx:2.0.0' 3} 在你的app模块或者其他module中添加依赖: 1dependencies { 2 implementation...'org.aspectj:aspectjrt:1.8.9' 3} 应用 我们在项目中经常会遇到一个小问题,就是你对一个View绑定的一个点击事件用户疯狂的快速点击导致点击事件的处理代码被重复执行,常见的处理方式就是在点击事件中加入时间判断的逻辑...所以,借助AspectJ中的AOP思想,可以在解决快速重复点击的问题的同时,可以让你的代码看的更优雅一点。

    2.4K50

    责任链模式以及在 Android 中的应用

    前言 这几天在重新阅读 Okhttp 源码的时候,看到了 Okhttp Interceptor 的应用,想起了责任链模式,于是,动手将自己对责任链模式的理解记录了下来,希望对大家有所帮助。...Client 方,即发起方,当我们发起请求的时候,直接交给 Handler 链表去处理即可 例子 我们来模拟一个公司的请假流程,比如说,在公司中,我们平时请假,在 OA 上面发起申请流程,少于 3 天的一般由组长审批即可...,并没有重写其他方法。...Android 中的体现 ViewGroup 事件传递 还记得 Android 总的事件分发机制吗,主要有三个方法,dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent...有序广播 Android 中的 BroastCast 分为两种,一种时普通广播,另一种是有序广播。普通广播是异步的,发出时可以被所有的接收者收到。

    1.1K10

    JNI 解析以及在 Android 中的实际应用

    1 简述 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(在Android里面主要是C&C++)。...、JNI对于Android安全以及Android安全加固等都是有所帮助的,一般情况下,在Android应用层,大部分时间都是在使用Java编程,很少使用C/C++编程,在一些比较特殊的情况下会用到,比如加密等等...2 如何使用 在目前的Android开发中,一般情况下有2种方法来使用JNI编程,就是传统的需要手动生成h文件和新版的CMake,Cmake的是利用配置文件来完成一些配置,实际上只是简化了流程,用CMakeLists.txt...4 JNI在Android中的实际应用 前面说了,JNI在整个Android系统中发挥了重要的作用,是连接底层和框架层的桥梁,在Android源码中更是大量的JNI代码,我们来说一个实际的例子:获取签名并且校验签名...在实际中,JNI还有很多的应用,比如FFMPEG,OpenGL等等,这个在用到的时候再说,大家也可以多去研究,今天的文章就写到这里,感谢大家阅读.。

    1.4K20

    动态代理原理及在 Android 中的应用

    因为一个静态代理类只能服务一种类型的目标对象,在目标对象较多的情况下,会出现代理类较多、代码量较大的问题。 而使用动态代理动态生成代理者对象能避免这种情况的发生。...时,将会在工程目录下生成 $Proxy0 的 class 文件(由于生成代理类的 ProxyGenerator 类在 sun.misc 包中,在 Android Studio 中无法调用,所以这里是在..."); 运行后,在项目的 src 同级目录下,会出现一个 com.sun.proxy 包,这个包里放的就是动态生成的代理类 $Proxy0。...五、动态代理在 Android 中的应用 1、Android 的跨进程通信中使用了动态代理 比如 Activity 的启动过程,其实就隐藏了远程代理的使用。...2、Retrofit 中 create() 方法通过动态代理获取接口对象。 这些场景可能不够全面,大家可以在评论区补充,看到新的场景,我后续也会补充的。

    2.1K10

    Zram idle page writeback在android 中应用

    是手机厂商的血液基因。“屌丝”代表成本的节省!而memory 显然是可以扣一口成本的。 为了更好的性能和节省更多的成本,ZRAM 来了。zram page writeback也来了。...然后系统再从zRAM中其解压缩如果需要用到相关的page。从而达到节省RAM 的目的 存储包,例如文件系统以及所有应用程序,库和平台的随附目标代码。...//获取writeback使用情况 cat /sys/block/zram0/bd_stat Android support 首先kernel 部分应该都支持(4.9/4.14/4.19/5.x) Andorid...frameworks 部分 frameworks/base/services/core/java/com/android/server/ZramWriteback.java 基本有如下prop 来控制...在开机完成后会做一次writeback,然后按照相关的时间点定期做writeback。

    1.6K10

    在Android应用中绕过主机验证的小技巧

    在Android应用中绕过主机验证的小技巧 反斜杠技巧 查看典型的主机验证代码: Uri uri = Uri.parse(attackerControlledString); if("legitimate.com...和java.net.URL的解析器中存在问题,它们不识别校验权限部分中的反斜杠(如果你测试java.net.URI将显示异常)。...在Android平台上被广泛使用,但是如果你看一下源代码,你会发现有一个带有几个内部子类的抽象类!... 在此步骤中,已经确认可以从第三方应用/ ADB攻击该攻击。... 你会注意到,在第一个例子中,所有都\将被替换/,在第二个例子中,它们将被保留编码,反斜杠技巧将不起作用。但仔细研究了intent://计划如何工作后,我找到了一种远程利用它的方法。

    1.9K50

    在 Android 12 中构建更现代的应用 Widget

    您可以将 Widget 理解为一个 "一目了然" 的应用视图,让用户在无需从主屏幕打开应用的前提下,就能对应用数据和核心功能一览无余。...本文我们就来介绍一下 Android 12 中带来了哪些关于 Widget API 的更新,以及有哪些好用的工具可以让开发应用 Widget 变得更加出色。...实现圆角 在 Android 12 中许多关键的界面元素都开始采用圆角设计,为了使 AppWidget 与其他系统组件样式之间看起来一致,Android 12 引入了 system_app_widget_background_radius...Widget 的外部容器,这样做可将系统参数提供的圆角半径应用于 Widget 背景中。...动态颜色 正如我们之前在 Google I/O 大会上宣布的那样,从 Android 12 开始,Widget 可以为按钮、背景及其他组件使用设备主题颜色,包括浅色主题和深色主题。

    2.2K20

    R8在Android手Q中的应用

    R8作为一个新工具,鲁棒性不如proguard,在面对手Q这个庞然大物时,出现了一些问题,本文主要分享一下R8在手Q应用遇到的问题,供后面有需要的同学参考。...三、R8在手Q应用中遇到的问题3.1 Liveness Analyze过程—根可达性算法在介绍补丁问题前,先简单介绍Liveness Analyze过程,后面的几个问题都和Liveness Analyze...理解根可达性算法前需要先理解四个概念:1、Root: 在proguard 配置文件中明确要keep的对象,算法的输入。...中有OnLifecycleEvent注解,R8 会默认将包含OnLifecycleEvent注解的类打入主dex中解决方案:暂时先改R8的源码,将HbDetailViewModel移除主dex3.3 Obfuscate...四 、 总结后面Android端混淆的主流工具慢慢会替换成R8,因此手Q对R8的应用也是不得不做的事情。任何工具在手Q这个庞然大物面前应用需要花费的更多成本。

    2.2K30

    Android--SVG在安卓系统中的应用

    ,性能高等优势,谷歌在Android5.0引进了SVG,并转化为Vector,在Android中指的是Vector Drawable,也就是Android中的矢量图,可以说Vector就是Android...中的SVG实现(并不是支持全部的SVG语法,现已支持的完全足够用了) Vector图像刚发布的时候,是只支持Android 5.0+的,自从AppCompat 23.2之后,Vector可以使用于Android...Vector 语法简介 通过使用它的Path标签,几乎可以实现SVG中的其它所有标签,虽然可能会复杂一点,但这些东西都是可以通过工具来完成的,所以,不用担心写起来会很复杂。...接下来是我们程序员需要注意的地方,在工程中使用Vector Drawable兼容5.0以下的版本方法 1、使用Android Studio 2.2以上的版本,gradle版本在2.0以上 1.1、在gradle...中添加 defaultConfig { vectorDrawables.useSupportLibrary = true } 1.2、在gradle中添加 compile

    2.8K20

    OpenCV 在 Android 上的应用

    在移动端上使用 OpenCV 可以完成一系列图像处理的工作。 二. OpenCV 在 Android 上的配置 我在项目中使用的 OpenCV 版本是 4.x。...在 Android Studio 中创建一个 Library,将官网下载的 OpenCV 导入后,就可以直接调用 OpenCV 中 Java 类的方法。...例子两则 3.1 作为二维码识别的兜底方案 在 Android 原生开发中,二维码识别有老牌的 zxing 等开源库。为何还要使用 OpenCV 呢?...下面的代码,展示了在应用层拍完照之后,将图片的路径传到 jni 层将其转换成对应的 Mat 对象,再转换成灰度图像,然后找出二维码的位置,要是能够找到的话就识别出二维码的内容。...在我们的实际开发中遇到一个应用场景:需要判断我们的手机回收机里面是否存放了物体。

    2.2K10
    领券