
技术
Android-开发者
想学习更多Android知识,或者获取相关资料请加入Android开发交流:1018342383。 有面试资源系统整理分享,Java语言进阶和Kotlin语言与Android相关技术内核,APP开发框架知识, 360°Android App全方位性能优化。Android前沿技术,高级UI、Gradle、RxJava、小程序、Hybrid、 移动架构师专题项目实战环节、React Native、等技术教程!架构师课程、NDK模块开发、 Flutter等全方面的 Android高级实践技术讲解。还有在线答疑
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android进阶:自定义视频播放器开发(上)
随着快手,抖音,西瓜视频等视频APP的崛起,视频播放已经成为主流,此时作为Android研发的你,想要提高自己的能力还不知道怎么开发视频播放器怎么行?所以今天就带着大家一起开发一个简易播放器:SmallVideoPlayer需求分析我们观察一个视频播放器,可以看到视频播放器除了正在播放的视频还有很多控件,比如播放按钮,暂停按钮,播放进度条,播放计时器等。这么多控件显然无法播放视频,但是他...原创 2019-07-16 14:56:57 · 1053 阅读 · 0 评论 -
APP共享内容
分享简单的文本内容 public void sharedSimpleContentClick(View v){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExt...原创 2019-05-27 17:35:50 · 357 阅读 · 0 评论 -
知乎 Android 客户端组件化实践
背景知乎 Android 客户端最早使用的是最常见的单工程 MVC 架构,所有业务逻辑都放在了主工程 Module 里,网络层和一些公共代码分别被抽成了一个 Module。现在看来,当时的业务线、产品功能及研发团队都比不上现在的体量和丰富度,遇到的问题随时组内沟通就可以解决。所以在知乎稳步发展的前几年,并没有遇到什么大的问题。后来公司发展速度加快,拆分了多个独立的事业部,每个事业部有独立的 ...原创 2019-05-27 15:54:58 · 232 阅读 · 0 评论 -
Android验证码输入框的实现!!!
前言验证码输入框是很多APP必不可少的组件,之前在重构注册登录页面的时候,重新设计了UI,所以不能再简单的用EditText来做了,所以这篇文章将分享一下如何实现一个常见的验证码输入框。正文重点在输入框,可能大多数APP里都是采用6个方框的UI效果,我这里是按照我们设计的要求,用6根横线来划出6个数字的位置。一开始我想的是直接用6个TextView,然后传递焦点的做法,但是发现实现起来有一定...原创 2019-05-22 19:53:48 · 2774 阅读 · 0 评论 -
Android:ReactNative语法基础(下)
PropProp可以理解为组件中的属性,它可以通过外界传递进来的参数,类似于构造函数的参数1、属性参数使用自定义组件的时候,传递参数到自定义组件中<View> <PropsText name = "小明", age = 18 /></View>2、默认属性在React中可以提供默认参数default...原创 2019-05-13 16:57:30 · 138 阅读 · 0 评论 -
10天我面试通过30多家企业,得出这3条经验。
年后正逢招聘季,作为职场新人,仅将此前在上海面试的经验分享如下,希望对您求职有用。个人概况:90后,大学肄业,无工作经验;10年写作经验,2年自媒体;曾环游中国,160多天无人区经历。求职方向:文案、销售、健身。作为大学辍学生,没有一技之长想要在上海滩月入过万起步是艰难的。正是和大多数求职者相似,所以必须要有明确的规划,以下是我的三点经验之谈。1.制定明确的面试策略最后期限:顾名思...转载 2019-05-22 17:27:38 · 521 阅读 · 0 评论 -
打造一个万能的适配器!!!
最近项目中 经常用listView和GridView ,可以说是项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter最近抽了时间,自己也打造了一个万能的适配器看我们之前的一些写法:public class ImageViewAdapter2 extends RecyclerView.Adapter<ImageV...原创 2019-05-26 21:35:10 · 145 阅读 · 0 评论 -
Android:ReactNative语法基础(上)
ES6特性类模块化箭头函数函数参数默认值模板字符串解构赋值延展操作符对象属性简写PromiseLet与Const1、类引入类的概念,让其具有面向对象的开发class Person { constructor(name,age) { this.name = name; this.age = age; }}2、模块化...原创 2019-05-13 16:13:42 · 203 阅读 · 0 评论 -
灵魂画师,Android绘制流程——Android高级UI
目录一、前言二、我们的目标是啥三、绘制流程从何而起四、Activity 的界面结构在哪里开始形成五、绘制流程如何运转起来的六、实战七、写在最后一、前言绘制流程可以说是Android进阶中必不可少的一个内容,也是面试中被问得最多的问题之一。这方面优秀的文章也已经是非常之多,但是小盆友今天还是要以自己的姿态来炒一炒这冷饭,或许就是蛋炒饭了转载 2019-05-22 16:00:09 · 337 阅读 · 0 评论 -
Android开发学习总结——appcompat_v7项目说明
一、appcompat_v7项目说明今天来说一下appcompat_v7项目的问题,使用eclipse创建Android项目时,发现project列表中会多创建出一个appcompat_v7项目,这是我搭建最新的Android开发环境创建第一个Android测试项目后发现的,我在创建Android时选择的Minimum Required SDK是API:8 Android 2.2(Froyo),...转载 2019-05-22 15:20:23 · 483 阅读 · 0 评论 -
Android:应用保活实践
最近在做的项目中需要app在后台常驻,用于实时上传一些健康信息数据,便于后台实时查看用户的健康状况。自从Android7.0以上后台常驻实现越来越难,尤其是8.0及以上。关于保活的文章比比皆是,但是效果并不理想,关于保活的方法也就常说的哪几种,重点在于怎么组合运用。最终实现效果为:用户不主动强制杀死的话,能够一直存活(小米,华为,vivo,oppo,三星)。其中三星s8,华为nova2s用户...原创 2019-05-16 20:14:21 · 308 阅读 · 0 评论 -
Android开发学习总结——搭建最新版本的Android开发环境
最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1,学习Android开发的第一步就是搭建Android的开发环境,博客园里面有不少人也写了关于如何搭建Android开...转载 2019-05-21 21:46:43 · 228 阅读 · 0 评论 -
面试经历:记一次Android面试
Android中的内存泄漏和内存溢出有什么区别?内存溢出是指程序在申请内存的时候,没有足够的内存可以分配,导致Out Of Memory错误,也就是OOM。内存泄漏:对象都有生命周期的,在生命周期完成之后,就该被垃圾回收和释放,如果得不到及时的释放,就会一直占用内存,造成内存泄漏。随着内存泄漏的堆积,可用的内存空间越来越少,最后会导致内存溢出。导致内存泄漏有很多原因,最常见的有内部类的使用,...原创 2019-05-23 14:52:13 · 301 阅读 · 1 评论 -
入职阿里巴巴的正确姿势
可以这么说,去阿里巴巴上班是很多程序员的终极梦想,毕竟阿里的技术在国内乃至全球都是数一数二的。成为一个阿里人,某种程度上,代表着你专业能力的一个合格性象征。这里给大家推荐一篇文章,听一听过来人的经验。下文中的第一人称“我”,来自作者「程序亦非猿」,一名来自阿里巴巴的程序员。在之前的文章里我提到过,2017年我实现了一个小目标,毕业三年加入阿里。听上去好像挺厉害,挺光鲜,但是实际上并不那么容...转载 2019-05-23 16:00:33 · 872 阅读 · 1 评论 -
用Flutter实现的无限滑动Banner
BannerGalleryInFlutter用Flutter实现的无限滑动Banner可配置的属性使用示例/// 构建数据List<BannerGalleryBean> _createTestData() { List<BannerGalleryBean> list = new List<BannerGalleryBean>(); ...原创 2019-07-11 17:31:44 · 604 阅读 · 0 评论 -
用 Flutter 实现 PageView 指示器
本篇用一个PageView的实例来加深印象,并且在之后的专栏里,我们会深化这个示例,做成一个支持上下左右无限滑动的图片Banner,并且教你如何把他做成Dart library并且开放给其他人使用。一.无限滑动的PageView在实现PageView指示器之前,咱们需要先实现一个PageView。在Flutter中实现一个PageView很简单。class BannerGalleryWid...原创 2019-07-15 17:47:31 · 1617 阅读 · 0 评论 -
android bitmap的缓存策略
在这篇文章中:lrucachedisklrucache缓存策略对比与总结不论是android还是ios设备,流量对于用户而言都是宝贵的。在没有wifi的场景下,如果加载批量的图片消耗用户过多流量,被其知晓,又要被念叨一波~如何避免消耗过多的流量呢?当程序第一次从网络加载图片后,就将其缓存到移动设备上,这样再次使用这个图片时,就不用再次从网络上下载为用户节省了...原创 2019-07-04 19:47:03 · 319 阅读 · 0 评论 -
由浅到深,深入分析APP卡顿和优化
从这篇文章中你能获得这些料:知道setContentView()之后发生了什么?知道Android究竟是如何在屏幕上显示我们期望的画面的?对Android的视图架构有整体把握。学会从根源处分析画面卡顿的原因。掌握如何编写一个流畅的App的技巧。从源码中学习Android的细想。收获两张自制图,帮助你理解Android的视图架构。文末有资料大纲一.从setContentV...原创 2019-07-03 17:56:14 · 482 阅读 · 0 评论 -
在子线程中直接使用 Toast 及其原理
一般我们都把Toast当做一个UI控件在主线程显示。但是有时候非想在子线程中显示Toast,就会使用Handler切换到主线程显示。但是子线程中真的不能直接显示Toast吗?答案是:当然可以。那应该怎么操作呢?在当前线程中先初始化一个Looper即可!Looper.prepare();Toast.makeText(getBaseContext(), "text", Toast.LENGT...原创 2019-06-27 17:09:05 · 441 阅读 · 0 评论 -
Android进阶:自定义类加载器加载加密类文件
之前面试的时候有许多面试官问类加载器相关的问题,所以这是一个很重要的知识点。而且对于高级Android研发来讲,懂得更多类加载相关的东西,对开发也会有很多的帮助,比如热更新,类加密等。其实笔者对类加密比较感兴趣,就稍稍调研了一下。类加密的其实是为了防止APP被反编译,防止反编译的方法有很多种,比如混淆,加固等。自己对类文件进行加密,并自定义类加载器也是一种办法:首先我们的代码打包编译之后会变成...原创 2019-07-02 15:17:46 · 608 阅读 · 0 评论 -
Android进阶:RxJava2源码解析 2
上一篇文章Android进阶:RxJava2 源码解析 1里我们讲到Rxjava2 从创建一个事件到事件被观察的过程原理,这篇文章我们讲Rxjava2中链式调用的原理。本文不讲用法,仍然需要读者熟悉Rxjava基本的用法。一.Rxjava2 的基本用法Rxjava是解决异步问题的,它的链式调用让代码看起来非常流畅优雅。现在我们带上线程切换以及链式调用来看看。下面代码是示例: Ob...原创 2019-06-26 17:25:32 · 175 阅读 · 0 评论 -
Android自定义View之音频抖动动效
自定义动画效果——音频抖动效果绘制一个矩形:想要绘制一个矩形,继承View,并重写onDraw方法即可。复杂一点还可以重写onMeasure方法和onLayout方法进行大小测量和位置测量。但本文不打算写那么复杂的view,故只需要重写一个onDraw方法即可: private RectF rectF = new RectF();//绘制矩形 private float lineWi...原创 2019-06-20 16:04:49 · 1961 阅读 · 0 评论 -
自定义View之手写Loading动效
这是一个很简单的动画效果,使用属性动画即可实现,希望对读者学习动画能达到抛砖引玉的效果一.自定义动画效果——Loading效果如上是我们需要做的一个Loading动画。Loading效果是很常见的一种动画,最简单的实现让设计画个动态图即可,或者画个静态图然后使用帧动画也可以实现。但是今天我们用纯代码实现,不用任何图片资源。 大致思路我们自定义一个View,继承View类...原创 2019-06-19 19:58:55 · 265 阅读 · 0 评论 -
Android 热修复原理(主要谈代码修复)
Android开发中,热修复技术被越来越多的开发者使用,市面上也出现很多成熟的开源框架。但对大部分开发者来说,热修复依然是一个既熟悉又陌生的词。仅仅知道热修复的作用,会使用框架,那样意义并不大。我们还要知道热修复的原理,这样不管框架如何变化,只要基本原理不变,我们都可以快速掌握它,或者自己动手写一个适合项目的热修复框架。热修复介绍1.开发流程当项目出现紧急bug时,传统的开发流程是发布新版...原创 2019-06-14 16:10:57 · 438 阅读 · 0 评论 -
Android:应用开发进阶必经之路之性能优化(上)
前言性能优化在一款产品的迭代过程中非常重要;程序实现了功能、还原产品原型只能保证程序能用,但如果要让用户更愿意使用,产品得好用。试想一下如果你开发的产品启动慢、页面显示需要长时间转圈加载、页面切换卡顿、黑白屏、用一会机器就发烫、耗内存、OOM、程序切换到后台后占用内存无法释放…,这些问题就像正在玩游戏时弹出提示框这类糟糕的用户体验一样让用户恼火,如果用户不得不使用你的产品,可能还会一直忍受;但...原创 2019-05-18 21:44:38 · 364 阅读 · 0 评论 -
Android:动态加载技术 简单易懂的介绍方式
我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装APK就能升级应用的功能(特别是SDK项目),这样一来不但可以大大提高应用新版本的覆盖率,也减少了服务器对旧版本接口兼容的压力,同时如果也可以快速修复一些线上的BUG。这种技术并不是常规的Android开发方式,早期并没有完善的解决方案。从“不明觉厉”到稳定投入生产,一直以来我总想对此编写一些文档,这也是...原创 2019-05-16 17:17:31 · 398 阅读 · 0 评论 -
为什么有人说 996 却没人说初中高中生的 596?
昨天在知乎上看到这么一个问题:为什么有人说 996 却没人说初中高中生的 596?而就在前几天和朋友聊天的时候,正好讨论过这个问题,员工的时候 996 ,当学生的时候,596,甚至 5126 都不为过。为什么会出现这种现象?其实,仔细想想工作 996 ,学习 5126 不是某个人的错,工作 996 其实也不能把责任推给老板,学习 5126 也不能把锅让学校背。这是整个中国的大环境,国情导致的...原创 2019-05-25 14:42:23 · 293 阅读 · 1 评论 -
Android:UI设计 常用控件
TextView<TextView android:id="@+id/first_txetview" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textSize="24sp" ...原创 2019-05-14 19:46:32 · 340 阅读 · 0 评论 -
Android:Activity与Fragment、Service之间的数据通信
1、Activity向Fragment传递数据?在Activity中创建Bundle,将数据以putString(key,value)形式放入bundle中,最后通过setArguments(bundle)方法,将其关联,在Fragment【与Activity依附的Fragment】中直接通过getArguments().getString()来获取。直接通过强转将其强转为Activi...原创 2019-05-09 21:48:03 · 1295 阅读 · 0 评论 -
Android完整详细阿里腾讯面试题含答案(二)
1、配置改变时,会导致Activity被杀死并且重新创建,那么我们要如何避免该情况的发生?第一种解决思路:设置配置文件中Activity的configChanges属性。我们可在AndroidManifest.xml中对应的Activity中设置android:configChanges=“orientation|screenSize”。再次旋转屏幕,Activity不会被杀死重建,会直接调用...原创 2019-05-09 21:27:02 · 431 阅读 · 0 评论 -
Android:在活动中使用 Menu
Android提供一种隐藏式的菜单栏,不占用显示空间又能实现菜单功能。一、菜单显示首先在res目录下创建一个menu目录,在menu目录下新建一个菜单文件(menu resource file)。在该文件中添加菜单代码:<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item...原创 2019-05-14 16:49:34 · 129 阅读 · 0 评论 -
Android:活动中的提示 (Tosat) 和打印信息 (Log)
一、ToastToast 是 Android 系统提供的一种很好的提醒方式,在程序中可以使用它将一些简单的信息反馈给用户,这些信息会在一段时间后自动消失,并不会占用屏幕空间。使用:首先要定义一个弹出Toast的触发点,例如设置一个按钮,在点击按钮的时候弹出一个Toast。public class MainActivity extends AppCompatActivity { @...原创 2019-05-14 16:33:48 · 733 阅读 · 0 评论 -
Android完整详细阿里腾讯面试题含答案(一)
1、四大组件是什么?Activity【活动】:用于表现功能。Service【服务】:后台运行服务,不提供界面呈现。BroadcastReceiver【广播接收器】:用来接收广播。Content Provider【内容提供商】:支持在多个应用中存储和读取数据,相当于数据库。2、四个组件的生命周期?Service的生命周期:首先Service有两种启动方式,而在这两种启动方式下,它的生...原创 2019-05-09 17:15:01 · 5552 阅读 · 0 评论 -
Android:使用 Intent 连接多个活动
Intent 是 Android 各组件之间进行交互的一种重要方式,一般被用于启动活动、启动服务以及发送广播等场景。显式 Intent:Intent有多个构造函数重载,其中一个 Intent(Context packageContext,Class cls)。第一个参数要求提供一个启动活动的上下文,第二个参数是指向想要启动的目标活动。创建好 Intent 后,用 startActivity()...原创 2019-05-14 15:47:48 · 395 阅读 · 0 评论 -
面试想拿 10K,HR 说你只值 7K,该怎样回答或者反驳?
最近朋友在面试的时候,HR突然来了句:你只值7K。朋友后面和我说了这个事。我想如果是我处在这种情况下该怎么回答或者反驳,发现自己并不能很好的回答或者反驳。不知道大家会怎么回答或者反驳?作者:上官文商链接:www.zhihu.com/question/28…正确的做法是:不动声色,继续跟HR谈下去、把面试流程走完,并且争取拿到这个7K的offer。这里有一个小技巧:如果拿到offer,礼貌...转载 2019-05-09 15:32:58 · 1943 阅读 · 2 评论 -
Android进阶知识:ThreadLocal
1、ThreadLocal是什么ThreadLocal是一个线程内部数据存储类,通过他可以在指定的线程中存储数据。存储后,只能在指定的线程中获取到存储的数据,对其他线程来说无法获取到数据。2、ThreadLocal的使用场景日常使用场景不多,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑使用ThreadLocal。Android源码的Lopper、ActivityT...原创 2019-05-06 19:43:20 · 106 阅读 · 0 评论 -
程序员招聘行话大全,能听懂证明你是历经磨难的老司机
刚开始投简历时,你总以为是这样的,其实大部分情况下是那样的……面试之后,HR让回去等消息,傻傻的等待,半个月以上没有回音,各种焦虑……明面上的意思就是实际意思的公司,貌似都是说的是别人的公司~~~~下面是职场达人总结的招聘行业术语(俗称招聘黑话),一看就懂证明你是历经磨难且具有拼搏精神的老司机,让我们一起来看看吧:1、能承受较大的工作压力——加班2、抗压能力强——加班+替别人扛雷3、工...原创 2019-05-13 22:12:57 · 442 阅读 · 0 评论 -
Android 动画之属性动画
简介Android 开发中,总是需要一些动画来优化用户的交互体验,提高用户满意度。因此,Google 为我们提供了一些用于处理动画效果的动画框架。Android 的动画框架分为两类:传统动画(Animation):通过系统不断调用onDraw方法重绘界面,来达到动画的效果。属性动画(Animator):通过操纵一个属性的get/set方法,真实地改变目标的某些属性。传统动画框架的局限性...原创 2019-05-07 19:46:57 · 170 阅读 · 0 评论 -
Android:【动画】带帧动画的Selector
普通selector只能在两种状态图片之间切换,animated-selector允许通过帧动画从一个状态切换到另一个状态XML代码:<?xml version="1.0" encoding="utf-8"?><animated-selector xmlns:android="http://schemas.android.com/apk/res/android">...原创 2019-05-10 15:21:37 · 439 阅读 · 0 评论 -
Android:实现模块 api 化
最近看了微信Android模块化架构重构实践这篇文章,刚好自己又正在搭建新项目的框架,用到组件化开发;感觉文章里面的一些技巧很有用,就跟着实现了一下,写一下自己的看法模块间的交互首先是解决模块之前的依赖问题,模块间肯定是不能相互依赖的,那如何进行数据交互就是一个问题了;比如用户模块和其他模块,其他模块如何在不依赖用户模块的情况下获取到用户信息;使用EventBus想要获取用户信息,那Use...原创 2019-05-21 17:20:42 · 361 阅读 · 0 评论