android
文章平均质量分 88
农家&子弟
不可能的事情只是因为还没去做
展开
-
Google 为何把 SurfaceView 设计的这么难用?
如果你有过 SurfaceView 的使用经历,那么你一定和我一样,曾经被它所引发出 层出不穷的异状 折磨的 怀疑人生—— 毕竟,作为一个有理想的开发者,在深入了解 SurfaceView 之前,你很难想通这样一个问题:为什么 Google 把 SurfaceView 设计的这么难用?不支持 transform 动画;不支持半透明混合;移动,大小改变,隐藏/显示操作引发的各种问题;转载 2022-12-02 14:08:27 · 321 阅读 · 0 评论 -
如何绕过 Android 8.0 startService 限制
如何绕过 Android 8.0 startService 限制文章来源于Android 面试官原创 2021-03-19 09:47:13 · 596 阅读 · 0 评论 -
2017年,你需要尝试的25个Android第三方库
Lottie这是一个动画库。通过Adobe After Effects做出动画效果,然后通过Bodymovin(AE的插件)导出JSON数据,然后通过该库生成原生动画效果。在Google Play Store上可以下载demo。该项目在Github上已经由超过8000个star。猴赛雷~~ ***Airbnb***公司出品。效果图如下:Github地址:h转载 2017-02-21 09:57:52 · 614 阅读 · 0 评论 -
Android 对话框详解
对话框是提示用户作出决定或输入额外信息的小窗口。 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。Dialog 类是对话框的基类,但您应该避免直接实例化 Dialog,而是使用下列子类之一:AlertDialog此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。DatePickerDialog 或 TimePickerDialog此对话框带有允许用原创 2017-01-12 17:21:28 · 726 阅读 · 0 评论 -
Android 任务和返回栈
应用通常包含多个 Activity。每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity。 例如,电子邮件应用可能有一个 Activity 显示新邮件的列表。用户选择某邮件时,会打开一个新 Activity 以查看该邮件。一个 Activity 甚至可以启动设备上其他应用中存在的 Activity。例如,如果应用想要发送电子邮件,则可将 Int原创 2017-01-12 16:24:52 · 505 阅读 · 0 评论 -
Android 调试桥
Android 调试桥 (adb) 是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具作为一个客户端-服务器程序,包括三个组件:客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户原创 2017-01-12 11:33:49 · 4997 阅读 · 0 评论 -
Android 中Intent 和 Intent 过滤器
Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任原创 2017-01-12 10:30:40 · 614 阅读 · 0 评论 -
微信小程序,让你慌成什么样了
两天前,微信小程序上线了,各种新闻就来了。很多人想原生开发是不是就要完了,有这个想法的人我敢确定没有自己的见解和思维,别人怎么说你就怎么信了。作为开发者来说,不管是什么风暴来了,你也得面对呀,你知道的越多肯定好处越多的,开发Android 的,你可以去学前端呀,没什么好犹豫的。微信小程序出来了你去学不就得了嘛。 其实呀,微信小程序也没那么好,我本人经常看头条,我们来看看小程序里面的头条是什么样的,原创 2017-01-11 16:48:43 · 519 阅读 · 0 评论 -
微信朋友圈的实现(图片查看,手势放大、缩小)
效果图: 简单的就这样,实现效果的方法有多种,可以使用ListView嵌套GridView,也可以直接使用RecycleView,这里只说RecycleView的实现方法。 难一点的地方就是每个item添加图片,这里使用的是自定义LinearLayout,LinearLayout里面主要做图片点击处理,设置图片布局,行数列数的排列。代码不多,直接贴代码了:public class Mult原创 2017-02-07 16:51:06 · 10980 阅读 · 0 评论 -
底部菜单 BottomNavigationBar 的使用
BottomNavigationBar 是Google官方提供的用以实现底部菜单的控件,使用简单,项目里面也一直在用,想想还是记录下来。首先添加依赖:compile 'com.ashokvarma.android:bottom-navigation-bar:1.3.0'布局:<com.ashokvarma.bottomnavigation.BottomNavigat原创 2016-11-25 16:06:45 · 3190 阅读 · 2 评论 -
Glide 加载圆形图片
有时候会用到圆形图片,比如用户头像,有时候还要你自己去定义,没那么麻烦,一个方法搞定final ImageView imageView = (ImageView) findViewById(R.id.img);Glide.with(this) .load("http://b.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=92e原创 2016-11-18 17:19:44 · 731 阅读 · 0 评论 -
Realm 数据库的简单使用
Realm 出来这么久了,一直没时间巩固,今天就花点时间巩固下吧。在没接触Realm之前,基本都是用Sqlite,现在都抛弃Sqlite了,相对于Sqlite来说,Realm更快并且具有很多现代数据库的特性,支持JSON,流式api等,数据变更通知,以及加密支持,这些都为安卓开发者带来了方便。当然,现在Realm支持的语言挺多的,更多。现在已更新到2.2.0版,下面都是基于2.2.0实现的。原创 2016-11-15 08:58:58 · 6671 阅读 · 2 评论 -
Android 运行时资源替换(Runtime Resource Overlay)
看到这样篇文章,感觉蛮好玩的,一起来看看。先抛一个问题:现在有一个第三方应用,没有代码,只有编译好的apk,在不去改动这个apk的前提下,如果想改变这个应用中的一些资源显示效果,比如改变一个button的文字,一个imageview的背景,有没有可能做到? 我的答案是有可能做到(废话,做不到的话让我怎么往下写(bian))。直接上栗子,拿蘑菇街的应用来开刀。先看下蘑转载 2017-01-09 17:53:17 · 1629 阅读 · 0 评论 -
从客户端的角度设计后端的接口
接口设计规范一. 接口示例以下是一个用户信息接口的文档示例,包含接口描述,请求参数,响应参数,json示例等。接口描述:用户登陆成功后,或进入个人中心时会获取一次用户信息URI方法/userInfoGET请求参数名称必填备注转载 2017-01-09 17:32:16 · 1777 阅读 · 0 评论 -
高德地图之地理编码
首先申明是地理编码呢?地理编码,又称为地址匹配,是从已知的地址描述到对应的经纬度坐标的转换过程。该功能适用于根据用户输入的地址确认用户具体位置的场景,常用于配送人员根据用户输入的具体地址找地点。既地理编码(地址转坐标)。 下面一步步来看怎么实现的: 1、继承 OnGeocodeSearchListener 监听。 2、构造 GeocodeSearch 对象,并设置监听。geocoderSe原创 2017-01-09 11:22:38 · 17068 阅读 · 5 评论 -
EditText 光标居右显示
有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实现方式,看布局 <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView原创 2017-01-18 10:40:05 · 6049 阅读 · 2 评论 -
仿微信头像剪切
来个动图: 裁剪效果其实就是图片在底部,上层一个视图重叠在上面,这里参考的是洪洋大神的仿微信头像篇,文章说的相当清楚了,我只是简洁的删改一点,看裁剪这个页面: 两个View重叠,就有了这个效果。看看底部View实现思路:底部View其实就是个ImageView,可以缩放,支持手势,直接贴代码吧/** * 缩放图片的View * <p> * <p> * Created by dong.原创 2017-01-18 16:23:25 · 3581 阅读 · 0 评论 -
为什么我们能在主线程直接使用 Handler,而不需要创建 Looper ?
为什么不需要创建 Looper ,就能在主线程直接使用 Handler ?每个Handler 的线程都有一个 Looper ,主线程当然也不例外,但是我们不曾准备过主线程的 Looper 而可以直接使用,这是为何?通常我们认为 ActivityThread 就是主线程。事实上它并不是一个线程,而是主线程操作的管理者。所以把 ActivityThread 认为就是主线程无可厚非。下面通过代码来看...原创 2019-02-21 11:02:23 · 2138 阅读 · 0 评论 -
为什么你做的H5开屏那么慢?H5首屏秒开方案探讨
来自:蚂蚁金服高级无线开发专家 bang随着移动设备性能不断增强,web 页面的性能体验逐渐变得可以接受,又因为 web 开发模式的诸多好处(跨平台,动态更新,减体积,无限扩展),APP 客户端里出现越来越多内嵌 web 页面(为了配上当前流行的说法,以下把所有网页都称为 H5 页面,虽然可能跟 H5 没关系),很多 APP 把一些功能模块改成用 H5 实现。虽然说 H5 页面性能变好了,转载 2018-02-06 09:44:27 · 731 阅读 · 0 评论 -
RecycleView 删除指定item
以前在使用ListView的时候,ListView删除item比较简单,现在基本都不再使用ListView,都换成了RecycleView了,这里的删除稍微麻烦一点,要执行多个方法,才能把item删除掉,根据代码讲解一下adapter.notifyItemRemoved(position);adapter.notifyItemRangeChanged(0, adapter.getItem原创 2016-10-30 16:10:20 · 5609 阅读 · 0 评论 -
Android 开发的17个建议,紧跟Google官方,进阶必看!
摘要使用 Gradle 和它推荐的工程结构把密码和敏感数据放在gradle.properties不要自己写 HTTP 客户端,使用Volley或OkHttp库使用Jackson库解析JSON数据避免使用Guava同时使用一些类库来避免65k method limit(一个Android程序中最多能执行65536个方法)使用 Fragments来呈现UI视图使用 Activities 只是为转载 2017-12-01 15:38:16 · 2690 阅读 · 0 评论 -
Android 中配置方法数超过 64K 的应用
随着 Android 平台的持续成长,Android 应用的大小也在增加。当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限。早期版本的构建系统按如下方式报告这一错误:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xff原创 2017-04-27 16:55:24 · 763 阅读 · 0 评论 -
Android Oreo 可下载字体
Android 8.0(API 级别 26)和 Android Support Library 26,现在允许 API 从一个字体供应程序里请求字体,而不需要绑定字体文件到 APK,或者由 APK 自行下载字体。该功能可通过 Android Support Library 26 运行在 Android API 14 及其更高的版本。可下载字体功能具有以下优点:减原创 2017-09-16 09:47:06 · 2767 阅读 · 0 评论 -
Android WebView中打开相机拍照和选择相册
一般在项目中与js交互,可能会遇到上传文件图片等操作,避免不了一些坑,下面简单说一下,Android 在不同版本中webView调用相机,选择相册的方法是不一样的,3.0以下的调用 public void openFileChooser(ValueCallback uploadMsg)3.0以上: public void openFileChooser(ValueCallback uploa原创 2016-12-01 11:28:03 · 15953 阅读 · 5 评论 -
从源码的角度理解Glide的执行流程
转自:http://blog.csdn.net/guolin_blog/article/details/53939176在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API。还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 。在多数情况下,我们想要在界面上加载并展示一转载 2017-04-21 12:30:10 · 518 阅读 · 0 评论 -
Android O 预览版推出啦!
Android O的开发者预览版终于出来了。但是官方称适用的一般注意事项:该版本尚处于早期开发阶段,我们将会提供更多功能,并仍会进行大量工作以保证其稳定性和性能。但是,它正在起步:)。在未来数月里,将发布更新的开发者预览版,并将在五月份的 Google I/O 上深入探讨 Android 的所有动态。一起来了解一下O 的新增功能:后台限制:在 Nougat 中便开始致力于延长用户的原创 2017-04-19 14:44:34 · 639 阅读 · 0 评论 -
Tablyout 点击tab切换页面闪烁
最近在做一个项目,使用5.0自带的TabLayout做导航栏,实现ViewPager+Fragment页面切换,后面发现从第一个tab直接切换到最后一个tab 的时候页面切换闪烁,网上查了一下,需要监听tabLayout的setOnTabSelectedListener,在重写的onTabSelected方法里面绑定viewPager的setCurrentItem(position,boole原创 2016-04-24 18:42:35 · 3601 阅读 · 0 评论 -
Android-如何开发一个功能强大的ImagePicker
图片选择器是Android开发中会经常用到的一个功能,特别对于社交类的应用,比如头像设置,比如发图片。自然ImagePicker的轮子很多,今天介绍一个功能强大的轮子SImagePickerhttps://github.com/martin90s/ImagePicker介绍首先功能强大之处首先基本的图片读取显示,以及图片更新监控超大图片预览,比如一张19M,1000转载 2017-02-27 17:35:03 · 865 阅读 · 0 评论 -
20个很棒的android开源项目帮助你提升开发技能
对程序员来说,最好的学习也是阅读,多看别人优秀的代码,加以总结学习应用。如果你想成为一个更好的开发者,就必须阅读大量的代码。书本,博客,论坛在一定程度上都是比较好的,但是比不上一些功能完整详细的开源项目。所以你要做的就是喝着咖啡看代码。O(∩_∩)O哈哈~下面列出来一些比较好的开源项目,每个项目都标注有难易程度。希望可以帮到你~LeafPic(Github | P转载 2017-02-21 10:05:25 · 885 阅读 · 0 评论 -
高德地图之逆地理编码
上一篇讲述了地理编码的使用,没看的朋友可以看看http://blog.csdn.net/hedong_77/article/details/54287292,Ok,我们继续来看你地理编码,首先要理解它的概念,逆地理编码,又称地址解析服务,是指从已知的经纬度坐标到对应的地址描述(如行政区划、街区、楼层、房间等)的转换。常用于根据定位的坐标来获取该地点的位置详细信息,与定位功能是黄金搭档。也就是坐标转地原创 2017-01-09 13:19:21 · 16777 阅读 · 12 评论 -
高德地图之周边搜索及两点间距离计算(Poi的使用)
最近比较闲,所以就顺便研究高德地图,原因是之前基本上都用的百度地图,但是百度地图的代码太多了,两字,很烦。先来个效果图: 蓝色的marker就是点击的,蓝色的圆圈是我当前位置。 apk下载地址:http://download.csdn.net/detail/hedong_77/9731739 一些基本操作这里就不多说了,自己去看官方文档,我们这里说一下周边搜索和POI计算距离。 首先原创 2017-01-06 18:07:02 · 20519 阅读 · 2 评论 -
这15个好习惯,让您成为一名成功的程序员!
真正优秀的程序员自身都拥有其他人不具备的好习惯,那么一个优秀的程序员该具备哪些好习惯呢?今天为大家整理了15个好习惯 ,如果能坚持下去,能为您今后的工作带来很大的益处,并且能帮助您成为一位真正优秀的程序员。1.编写易于理解的代码 在编码时,要使用明确定义的命名规则,具体包括易于理解的表达式变量以及明确定义的对象和库,同时也要使用正确的缩进和换行符。这将有助于规范代码格式,并原创 2016-12-29 09:56:05 · 822 阅读 · 0 评论 -
Android开启手电筒功能(完美适配Android4x,5x,6x)
原文http://blog.csdn.net/mynameishuangshuaiAndroid4x、5x、6x的手电筒开启方法,写成公共方法,分享给大家。添加摄像机和闪光灯权限android:name="android.permission.FLASHLIGHT" />android:name="android.permission.CAMERA" />android转载 2016-11-24 13:41:38 · 2326 阅读 · 0 评论 -
Android程序Crash时如何获取异常信息
原文:http://blog.csdn.net/singwhatiwanna/article/details/17289479前言大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉你的程转载 2016-11-30 17:43:59 · 2927 阅读 · 0 评论 -
仿淘宝物流时间线的实现
物流时间线是根据物流状态改变而改变的一种动态效果。贴张图:下面看一下自定义的View:第一步://初始化参数private void init(AttributeSet attrs) { TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.timeline原创 2016-11-17 12:06:53 · 3343 阅读 · 0 评论 -
带刻度尺的RangeSeekbar
项目里面有个功能使用到了根据价格区间选择商品,功能实现就要用到RangSeekbar,带刻度尺,好吧,网上一把狂搜,都是二手货,达不到自己想要的效果,拿个demo下来慢慢改吧,代码虽然有点多,但是功能还是要呀,产品催进度,一把狂改之后终于有个样了,贴个效果图:<com.example.donghe.rangeseekbar.RangeSeekbar android:id="@+id原创 2016-11-16 14:25:58 · 5554 阅读 · 1 评论 -
RecycleView 使用GridView样式列表添加头部
写这篇文章的由衷是在项目里面遇到了这样的一个问题,使用recycleView,列表样式使用GridLayoutManager设置,再此基础上添加头部,如果只是一味的往下写,当做LinearLayoutManager来做,那么列表显示就有问题了,我的列表数据是五条 for (int i = 0; i < 5; i++) { SpecialDetailBean bean原创 2016-11-08 16:51:38 · 850 阅读 · 0 评论 -
RecycleView 实现左右列表并排
网上关于ListView的左右列表并排挺多,但是现在基本上都没用ListView 了,今天来写写RecycleView左右列表并排。页面布局:xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_heigh原创 2016-11-09 11:14:22 · 4370 阅读 · 3 评论 -
BottomSheet 的详解及注意事项
android support library更新的比较快,使用了几个控件挺不错,不过今天只写BottomSheet 。 OK,这个东西肯定很多人都没听过和用过,其实用起来特别方便和简单,不过它的使用需要引入Behavior机制,别说你没听说过Behavior,Behavior是CoordinatorLayout的核心内容,其允许我们在自定义控件的前提下实现一些特效,BottomSheet 就是通原创 2016-09-07 19:40:38 · 2935 阅读 · 2 评论 -
Android okhttp详解
文章来自 一、概述最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了。再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价。为了更好的在应对网络访问,学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用,主要包含:一般的get请求 一般的post请求 基于Http的文件上传 文件下载 加载图片 支持请求回转载 2016-07-07 14:06:34 · 369 阅读 · 0 评论