android开发
文章平均质量分 98
Android世界的小学生
代码就像人生,越丰满,充实,井井有条,越存在着优化,提升的地方。
展开
-
Only fullscreen opaque activities can request orientation 最好的解析
好好的应用按到华为8.0上就崩溃了,感觉非常无语,解决的时候,查了一下资料发现虽然很多人都遇见过,但是总结的并不全面,有一些还是有问题的。所以特意将这个崩溃,从源码级别给大家分析一下,让大家知其然,知其所以然。先上解决方案,后面是源码级的触发原理。解决方案:适配版本不大于26(显然不合适)不设置windowIsTranslucentwindowSwipeToDismisswindowIsFloating为 true首先我们先看下:Only fullscreen opaque act原创 2020-10-20 14:14:43 · 1644 阅读 · 1 评论 -
Android 屏幕旋转 全解析
屏幕旋转一般的解决方案关于屏幕旋转这里,之前一直没太注意,因为根据设备会有指定的屏幕旋转策略如:1.开发手机应用时一直使用强制竖屏布局2.开发平板设备一直使用横屏布局3.开发系统应用,一般给两套即横竖各一套其实这三种模式一般来说,可以为我们规避大量的问题!但是总有一些特殊情况,让我们摸不清头脑。所以这次我就从头到尾的做一次实验。将屏幕旋转这里的知识点和要点归纳出来。事前准备适配框架使用:implementation 'me.jessyan:autosize:1.2.1'<meta-原创 2020-10-20 13:52:36 · 5130 阅读 · 0 评论 -
Android Gradle 详解 2016 干货
为啥要说Gradle,因为这哥们是在是个坑啊,而且还是绕不开的坑啊。 就像我,上来就一心想着干代码,完成项目,但是往往有的时候就会掉到这个坑里而无法自拔。实在是恨死了啊。说多了都是眼泪,那么直接上图,从简到难,深入浅出的来了解一下Gradle到底是个什么东西。 Project 分支下的 settings.gradle 当中主要是用来 include 子模块的,比如我们这个工程有一个叫做 app原创 2016-10-08 10:30:58 · 513 阅读 · 0 评论 -
Android 常见的高级控件
为什么要写这个那,因为在程序开发过程中,经常会使用到一些,基本控件无法满足的页面,那么这个时候就需要我们自己自定义View了,这可不是个轻松的活,但是有一些控件是Android为我们设计好的,那么我们给他换个皮肤,直接拿过来用,不是更省心省力吗。自动完成文本框 在Android开发中提供了两种智能输入框——AutoCompleteTextView和MultiAutoCompleteTextView原创 2016-10-20 13:32:32 · 769 阅读 · 0 评论 -
2016 View 使用TextPaint来绘制文字
TextPaint是paint的子类,用它可以很方便的进行文字的绘制,一般情况下遇到绘制文字的需求时,我们一般用TextPaint所提供的方法。开始学习如何绘制文字之前,我们必须要先了解下android中文字是怎么绘制到屏幕上的,文字的格式又是怎么样的。一、FontMetrics(字体度量) 1.1理论知识 它是一个Paint的内部类,作用是“字体测量”。它里面呢就定义了top,ascent,d原创 2016-10-20 11:24:56 · 2002 阅读 · 0 评论 -
Android RecyclerView 使用完全解析
说到ListView和GridView大家肯定不陌生,相信也有很多人已经使用到了出神入化的地步,因为这两个控件实在是太常用了,可以说任何项目都会有ListView的身影,而且使用方便简单代码量少!但是习惯了往往就不喜欢使用新鲜事物,就像我自己使用了几次RecyclerView之后就还是使用ListView了,但是说句真心话,现在ListView已经越来越难完成页面上的需求了。所以今天特意写一片帖子来原创 2016-11-10 13:37:13 · 718 阅读 · 0 评论 -
2016 Android setContentView LayoutInflater 加载 原理
这个东西你说有用吗?但是用的时候好像一句话就搞定了。你说没有那但是那个Activity都必须有他。所以还是要学习一下,以备不时只需。因为在软件里越是用着方便的东西,可能封装的更好,里面藏着很好的设计思想和一些平常学习不到的知识。对于setContentView大家应该都知道他是干什么的,从字面上就可以看出来,设置内容页面。那么这个过程是如何进行的我想大家可能都没有注意过。说句实话我也没有怎么研究过,原创 2016-10-19 16:50:33 · 610 阅读 · 0 评论 -
Android 抽奖 转盘 动画 实现原理详解
Android动画之旅有一段时间没有写新的内容了。我之前想的是,边学习边开发一些有用的小Demo但是一写起来就根本停不下来了。先给大家展示一个成果,后续我会将每个项目的原码和原理分析发布出来。虽然我知道看的人可能不多,但是写东西总结对自己本身也是一种检验和复习。还是希望我的博客人可以越来越多。 先展示一下成果。本来是想写五个但是写着写着就写成了8个。 那么今天写一个最简单的大转盘开始,逐渐深原创 2016-11-08 10:47:52 · 4161 阅读 · 2 评论 -
Android中Rect和RectF的区别与联系
1.联系 都是用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作。这块矩形区域,需要左上和右下两个坐标点表示(所以需要的是四个参数,即两个坐标点,四个坐标参数)。区别: (1).精度不一样。Rect是使用int类型作为数值,RectF是使用float类型作为数值。 (2).两个类型提供的方法也不是完全一致。在网上看了几帖子,发现都没有把这两个类的作用说的很清楚。 第一:对于这两原创 2016-10-27 13:59:56 · 1158 阅读 · 0 评论 -
2016 Android 动画 详解 干货(二)
昨天我使用所学的新的技术完成了一个 转盘抽奖的小游戏。这些游戏的设计和实现以及原码会逐步的给大家放出来。今天就来看些高级的用法和使用技巧。 ValueAnimator 属性动画,其生成的并不是一个特定的效果,而是一些列可加速减速匀速的数据,以此使我们的动画看起来更佳平滑美观。他就不在是简简单单的移动了。正因为属性动画产生的是数据这个特性,所以对于属性动画来说,他所适应的对象不再仅仅是View了任何原创 2016-10-12 13:57:28 · 430 阅读 · 0 评论 -
2016 Android 动画 详解 干货(一)
本系列文章会借鉴一些前辈的经典帖子。这里对这些巨人表示感谢。 在最后我会放出一些根据这些动画实现的小游戏,以及原码,不足的地方欢迎切磋。Android的动画一开始分为两种方式实现 第一种就是:逐帧动画 实现原理很简单就是将一个完整的动画拆分成一张张单独的图片,然后连贯起来进行播放。类似于动画片的工作原来。 第二种就是:补间动画 则是可以对View进行一系列的动画操作,包括淡入淡出,缩放,平移,原创 2016-10-11 13:40:53 · 619 阅读 · 0 评论 -
2016 Android注释技巧 Android Studio
不懂的就要学,这就是成长;一些东西可能很偏,但是不代表可以放弃。掌握20%的技术可以让你得心应手的解决80%的问题,但是用剩余80%的只是去解决那20%的问题就决定了你的高度!这就是为什么你感觉大家水平差不多,但是人家就是比你强的原因。因为都可以解决的问题不值钱,我能解决而你不能的问题才值钱。注释是每个代码当中都要使用到的帮助信息,而且专业的注释也可以大大的提高我们代码的可读质量。注释是对一个方法或原创 2016-10-08 14:27:05 · 6734 阅读 · 1 评论 -
Android 自定义底部弹窗
今天看了一个简单而实用的Demo所以特地到这里写个帖子,进行一些总结。第一这个技术点算是很常用的,当然我也有几种方法进行实现,但是自认没有这个简单,复用性也没有这个高。那么进入正题,就像题目写的没错就是自定义底部弹窗。我那之前是使用PopWindow这个算是正统的使用方法,当然你如果不太熟悉PopWindow,那么你还可以用一个比较讨巧的方法,就是定义一个背景为半透明黑色的Activity,就可以了原创 2016-11-14 16:20:41 · 733 阅读 · 0 评论 -
Android加载器LoaderManager.loaderCallbacks
Loadersloader在android 3.0之后才被引入,它简化了在activity和fragment中异步加载数据的步骤(个人认为简化是次要的,更重要的是优雅的实现了异步加载),loader有如下特点:适用于每个activity和fragment提供异步加载的实现方法监听数据源的一举一动,在数据发生变更时自动返回新的结果当由于配置改变而被重新创建后,它们自动重连到上一个加载器的游标,所以不必原创 2016-12-01 14:26:00 · 1814 阅读 · 0 评论 -
Android 动态多语言实现方案
语言的准确表带,对于多语言用户来说,是对该国家文化的尊重,和对产品态度的严谨。而在推荐产品的时候如果对客户说,我们的产品支持动态的更新系统语言,在多语言销售时也是一个吸引客户的亮点。说起Android的多语言相信大多数的场景下我们的解决方案大致流程是:将全局String类型的资源抽离到string.xml文件中 然后根据这个基础的string.xml文件进行扩展在key值不变的情况下,根...原创 2021-01-04 14:12:50 · 1886 阅读 · 0 评论 -
从FragmentPagerAdapter看Fragment 生命周期
之前写过一个关于Fragment使用的帖子,但是并没有对生命周期做太详细的了解。因为那个时候主要是首页上的四个页签,然后用FrameLayout进行管理,使用那个显示哪个就可以了,然后在onCreateView里面初始化并返回我们要使用的View即可。但是最近看到了一种写法就是一个Activity中放置多个数据显示格式相同,按内容划分的Fragment,而且确实按照正常无优化的方法,随着浏览时间的加原创 2017-08-02 16:10:23 · 1841 阅读 · 0 评论 -
3分钟搞定 Android Lambda表达式
Lambda表达式是JAVA8新加入的特性。目的是让代码更少,同事减少我们的工作量。当我们打开一个新的.java文件时会看到编译器自动将某些代码变成了Lambda表达式的形式,那么可以想象成Google更推荐大家使用Lambda表达式进行JAVA代码的书写。那么一直是看,能看懂但是没有真正的去使用,今天就完整的给大家写一个如何使用Lambda表达式的帖子,希望大家可以一起学习,一起进步,写出逼格更高原创 2017-07-27 18:07:00 · 530 阅读 · 0 评论 -
2017 Android进程详解 进程保活
首先对Android中进程的优先级从高到低进行一个划分 1.Foreground Process 前台进程 最前断的进程 2.Visible Process 可见的进程 3.Service Process 我们普通创建的Service 4.Background Process 处于背景情况下 没有退出但是没有显示了 5.Empty Process 应用推出了 资源释放了 但是内存还有一些原创 2017-06-11 15:17:32 · 408 阅读 · 0 评论 -
2017 Android Toolbar 教程详解
这几天再看Android的新控件,打算彻底的研究分析一下各个控件的特性,已经设计初衷,毕竟UI是为了用户交互,而通用UI更是为了应付更多的使用场景的。那么就先从这个最简单和实用的Toolbar开始。如果使用的话那么一个APP90%的页面可能是需要顶部导航栏的,那么如果不自定义而使用官方推荐的控件,那么就是Toolbar了。但是不得不说在使用toolbar之前我还是使用自己写的一套顶部导航,毕竟自己写原创 2017-06-20 16:04:53 · 1728 阅读 · 0 评论 -
Android 新控件学习总结
一、CoordinatorLayout CoordinatorLayout 作为一个“super-powered FrameLayout”,主要有以下两个作用: 作为顶层布局; 作为协调子 View 之间交互的容器。 当我们使用CoordinatiorLayout的时候我们需要在我们项目的gradle加入依赖compile 'com.android.support:design:25.0.原创 2017-06-19 17:28:20 · 376 阅读 · 0 评论 -
从Java到Kotlin
作为一位Andorid开发者,或者说一名前端开发者,实在是感概“日新月异,一山更比一山高”。2016年的夏天我还在解决从Android4.0到5.0时的权限适配问题,以为这已经是一个很大的跨度了,但是到今年我已经要开始考虑Android7.0的安全适配问题了,然后如期而至的Anroid8.0也到来。这只反应出一个问题——前端开发者必须时刻紧跟时代的步伐,去吸收,接纳新鲜事物,和新技术。暂且不管,甲骨原创 2017-06-19 15:37:41 · 791 阅读 · 0 评论 -
从Java到Kotlin
作为一位Andorid开发者,或者说一名前端开发者,实在是感概“日新月异,一山更比一山高”。2016年的夏天我还在解决从Android4.0到5.0时的权限适配问题,以为这已经是一个很大的跨度了,但是到今年我已经要开始考虑Android7.0的安全适配问题了,然后如期而至的Anroid8.0也到来。这只反应出一个问题——前端开发者必须时刻紧跟时代的步伐,去吸收,接纳新鲜事物,和新技术。暂且不管,甲骨原创 2017-05-19 16:24:03 · 2689 阅读 · 1 评论 -
Android录音MP3解决方案
这几天,接了一个政府的项目,其中有一个需求是可以在Android本地录音并且传送到服务器,让服务器的WEB端可以进行播放。然后我使用的是Android自己的MediaRecorder,但是这个录音生成的编码形式非常具有局限性,其生成的格式也非常有限,主要有如下几种public final class AudioEncoder { public static final int AAC原创 2017-03-21 14:44:56 · 1642 阅读 · 0 评论 -
Android ListView 详解 2016 干货
首先说下为什么写这篇文章,最近接手了一个离职同事的项目,点开之后看见它写的ListView真的是跪了,好坏不说,如果单单只是为了实现而”不择手段”,那么对自己的职业生涯又有什么好处?除了项目被重构,我估计如果真的有一天被技术或者客户反馈了你的职位也要被重构了。所以希望写这篇文章帮助大家,第一个将基本功扎实起来,第二个应付各种各样的ListView都不发怵,都有一套可一应对的方案。ListView作为原创 2016-08-25 10:47:19 · 784 阅读 · 0 评论 -
Android Token 详解 使用技巧 2016
Token n. 表征;代币;记号 但是在计算机领域里我们翻译成:认证;令牌。 就好像古代进宫的腰牌,当我们要申请使用服务器数据的时候,数据库当然有防护,就像守卫,那么我们进去,给他们看一下我们的令牌,他们确认令牌正确就会放我们进去。你可以把他看成认证,也可以使用我说的例子帮你理解。那么Token为我们解决什么问题那?还是用上面的例子,如果我上皇宫的访问者,那么我不能每次进宫都去找人,弄一个原创 2016-08-03 10:07:56 · 7138 阅读 · 0 评论 -
深入理解ButterKnife
最近公司使用了自己的框架,为了提高工作效率,使用了注释开发。使得程序可读性和开发效率更快。 其实现原理就是:使用JAVA的反射机制,进行反射动态加载编译,进而完成findViewById的工作。 但是反射也是有其缺点的就是会降低程序的运行速度。 而且框架虽然使用了注释编译,但只是一定程度上降低了开发的工作量,因为要自己打@BoundView(R.id.id) private View view原创 2016-07-18 17:50:17 · 737 阅读 · 0 评论 -
百度云推送的研究
0.下一个百度云推送的demo 1.准备一个自己的API KEY,否则绑定失败,无法接收到推送的消息。 2.在androidManifest.xml 中将api_key修改并且保存。<meta-data android:name="api_key" android:value="my_api_key"/>3.修改之后就可以进行运行了,运行的是百度云推送的demo. 4.注意:原创 2016-05-17 16:36:31 · 2033 阅读 · 0 评论 -
高德地图全解析--定位篇
之前使用的是百度地图的定位功能,不知道什么原因注册的时候总是失败,而且JAR和SO的匹配也弄的我十分蛋疼,最后换了最新的JAR和SO依然不好使,回调函数一直失败,究竟是为了什么,我也不知道。反正结果是我醉了ORZ。但是那条条大陆通罗马吧,启用高德定位,这货好使了,但是,但是,但是,最恶心的是这货的验证机制,真尼玛不想说,特别难弄。日了狗了。这里面的蛋疼就不说了,但是它也确实是好用的,而且功能比较完善原创 2016-05-27 09:39:02 · 12695 阅读 · 0 评论 -
Android之微信支付宝开发
Android开发要点说明 1、后台设置 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的卫衣表示的APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图8.8红框内所示。2、注册APPID 商户APP工程中引入微信JAR包,调用API前,需要先向微信原创 2016-04-19 16:40:33 · 413 阅读 · 0 评论 -
Android学习之位图BitMap
BitMap代表一张位图,扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/8=3072KB 位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg格式则原创 2016-04-18 11:01:04 · 468 阅读 · 0 评论 -
Afinal使用详解之FinalHttp
1.FinalHttp是什么 :顾名思义,就是一个用于实现客户端与服务器之间网络通信的类,这个类主要通过对apache的httpClient开源项目进行封装,实现在http和https协议下的GET和POST两种请求方式,以及put/delete/download等功能.FinalHttp 对 HttpClient再次封装,最简洁的就是增加了许多回调的方法,对Get 和 Post 请求进行了简化。另原创 2016-04-18 10:28:03 · 4115 阅读 · 0 评论 -
Intent中各种常见的Action
1 Intent.Action_CALL Stirng: android.intent.action.CALL 呼叫指定的电话号码。 Input:电话号码。数据格式为:tel:+phone number Output:Nothing Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.原创 2016-04-09 15:23:18 · 1426 阅读 · 0 评论 -
Android客户端和服务器数据交互
1.BasicNameValuePair(基础的NAME-VALUE对) java.lang.Object 继承者 org.apache.http.message.BasicNameValuePair 由此可看出使用于网络通信. 主要用于存放即将传输给服务器端的 数据对! 如服务器设置数据为 那么在程序中的数据封装就应该为 ArrayList arrayList原创 2016-04-08 17:47:38 · 525 阅读 · 0 评论 -
Afinal详解之数据库篇FianlDb
首先创建Bean package com.devchina.ormdemo;import java.util.Date;public class User {private int id;private String name;private String email;private Date registerDate;private Double money;/////////////g原创 2016-04-12 09:13:58 · 1638 阅读 · 0 评论 -
Fragment&FragmentActivity
1.使用Fragment首先要让Activity继承FragmentActivity FragmentActivity包含了Fragment运作的FragmentManager接口和实 现类FragmentManagerImpl,其掌管了所有Fragment的显示和隐藏。 2.首先Fragment 就可以把它当作一个view , 只不过这个view 与 activity一样有了生翻译 2016-04-06 14:33:25 · 436 阅读 · 0 评论 -
Android EQ详解
EQ就是频率均衡器,适当的调整和控制可以设置重低音,古典,摇滚之类的感觉 主要的类就是 android.media.audiofx.Equalizer //many application can control equalizer ,so we need priotiry //首先初始化这个类,需要两个参数,第一个是优先级,默认是0.所谓优先级就是说当有多个应用同时去控制EQ的时候,就靠优原创 2015-05-04 15:45:58 · 1109 阅读 · 0 评论 -
自定义控件-自定义动画的下来刷新
从实际角度来说,引入自定义控件是在开发中非常常使用的技术。 原因有两个 1.一个公司有苹果安卓双端产品,要求产品界面风格同意,那么有的时候在苹果上很容易实现的功能在安卓上是没有的,那么就要自己开发一个控件和苹果统一。安卓大多数的设计确实不如苹果美观。 2.开发中将某些控件组合封装成一个控件,例如把开始时间和结束时间组合的日期选择,就非常的使用。载入汽车导航的右侧,始终有一个指南针动态的调整角度原创 2016-05-19 15:01:01 · 467 阅读 · 0 评论 -
Android Base64 Md5 SHA1 编码解码 解析
主要讲解的内容:编码、数字摘要、加密、解密 编码:Base64、urlEncoder、urlDecoder当我们发送一个get请求的时候 形式如下 xxx?name=阿斯顿f&age=100当我们在一个请求中传递的数据出现了中文和一些Url中定义的符号如(?&)那么请求就无法识别这里要强调的是无论是get还是post在传递值的时候都是不支持上面那些敏感词的传递的。如果传送的请求包含上述的信息,那原创 2016-07-10 10:31:05 · 1267 阅读 · 0 评论 -
Android注释开发
从jdk1.5开始java提供了注释功能,允许开发者定义和使用自己的注释类型。 该功能由一个定义注释类型的语法和描述一个注释声明的语法,读取注释的API;一个使用注释修饰的class文件和一个注释处理工具组成。首先,其语法定义形式为@interface,其含义为声明一个注释类的关键字。使用@interface表示我们已经继承了java.lang.annotation.Annotation类,这是一原创 2016-06-21 10:18:22 · 491 阅读 · 0 评论 -
Android 百万级视频应用开发(二)
在完成可之前的思考之后,我感觉我也是绞尽脑汁了。 7月25号的时候出了效果图,和切图,我26号下午完成了整个软件的页面搭建。历史8.5小时26个页面。但是我想我应该可以做的更好,因为,我的封装做的还不彻底,既然复用那么复用率就应该达到100%!既然封装,那么就应该封装到极致。之后26号的晚上一直在思考如何降低后台开销。到了27号的时候,公司告诉我用阿里云服务器,解决。也是花几千块,真的比自己开发这原创 2016-07-27 14:58:06 · 481 阅读 · 0 评论