自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萧萧北keno的专栏

帝都Android 攻城狮

  • 博客(111)
  • 资源 (7)
  • 收藏
  • 关注

原创 重学java8(壹) Android Studio 4.0官方支持java8,无需设置最低 API 级别

Android Studio 3.x时代,项目中如果需要使用java 8新特性,除lambda表达式外,如需使用stream 、time、函数接口、Optionals、ConcurrentHashMap等Api,需要调用前限制api>= 24,即仅支持Android 7.0以上,低版本还需单独适配或使用非官方解决方案retrolambda,很大程度上劝退了一批开发者;Android Studio 4.0(2020年5月)发布后,直接支持java 8 标准API,而无需给应用程序设置最低 API 级.

2020-08-17 20:24:13 745

原创 Gradle下载速度慢解决方案-使用国内镜像进行加速

Gradle下载速度慢解决方案-使用国内镜像进行加速打开工程文件根目录 build.gradle在 buildscript 和 allprojects 的 repositories 中分别注释掉 jcenter(),并使用国内镜像进行替换:maven{url ‘http://maven.aliyun.com/nexus/content/groups/public/’}在 buildscript 的 repositories 添加:maven{url “https://jitpack.io”}//

2020-08-14 21:45:29 1941

原创 Android应用退到后台点击桌面图标引导页面重复启动问题

场景:打开应用 启动引导页A ,然后自动跳转首页B闭引导页A, 应用退到桌面后点击桌面图标会 会再次启动A–>B;我们希望能做到退到桌面时点击图标能直接打开首页B;注意:此场景仅在使用签名证书打包的应用出现,debug安装应用无问题为了实现以上需求,我们需要在 引导页A 的onCreate生命周期方法中判断引导页A是否初次启动,是否栈内第一个Activity,如果是则直接finish即可。可以通过Activity的 isTaskRoot() 方法进行判断isTaskRoot()系统源码如下.

2020-08-12 23:22:32 1106

原创 Android刘海屏适配最佳实践-引导页、沉浸式小说阅读页

刘海屏适配最佳实践-引导页、沉浸式小说阅读页前言刘海屏是Apple公司在iPhone X率先推出的,后续Android阵营陆续跟进,众所周知Android机型碎片化极其严重,在Google官方正式推出适配方案前,Android开发开发者对各大厂商设备需单独进行刘海屏适配,工作量可想而知。概要Google官方在Android 9.0 后对刘海屏进行了支持,本文内容便是基于官方刘海屏解决方案进行介绍:模拟器 开启刘海屏设置官方适配方案 (不适配默认效果) 声明xml 以及代码实现三个刘海屏

2020-07-31 00:09:15 634 2

原创 Android版3D-Touch Shortcuts实现类似支付宝桌面快捷配置

Android版3D-Touch Shortcuts实现类似支付宝桌面快捷配置在Android 7.1后新增 shortcut实现桌面快捷方式,可实现类似iOS 3D-Touch的效果,给应用配置快捷方式后,长按桌面图标可快速进入对应目标页面。该项目主要实现了类似支付宝动态配置桌面快捷。Shortcut配置快捷方式 支持静态配置 和 动态配置两种方式静态配置Shortcut快捷方式1. 在res/xml目录下声明 shortcuts快捷方式,包含多个shortcut Item,文件名为sho

2020-07-22 23:05:18 501

原创 Swift快速入门(二)之 面向对象编程

Swift快速入门(二)之 面向对象编程Swift快速入门(一)之基础语法本文为第二篇《Swift面向对象编程》主要涵盖以下内容函数闭包枚举结构体和类属性初始化函数函数(function)相当于java中的方法。函数的的声明使用 func 关键字。函数声明示例var title = "Hello,函数"//声明函数func sayHell(){ print(...

2019-06-05 22:34:32 288

原创 Swift语法快速入门(一)

Swift语法快速入门(一)近期重新学习了一遍Swift语言,主要以《Swift编程权威指南(第2版)》为教程,学习过程中结合比对Java语言特性将学习心得作为三篇笔记:Swift基础语法,Swift面向对象,Swift高级编程。本文为第一篇《Swift基础语法》主要涵盖以下内容类型、常量和变量if-else条件语句switch语句数 整数和浮点数循环 for和while字...

2019-05-28 23:54:29 1024

转载 Android Canvas绘图详解【转】

Android Canvas绘图详解(图文)原文出处:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不

2017-02-15 19:28:28 1083

转载 Android 基于Message的进程间通信 Messenger完全解析【转】

Android 基于Message的进程间通信 Messenger完全解析

2017-01-23 10:11:49 550

转载 Android Binder设计与实现 - 设计篇【转】

Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Bind

2017-01-10 08:57:39 655

原创 单例模式Singleton 你是唯一

单例模式1.单例模式(分为懒汉和饿汉) * 懒汉式,创建时判断对象实例为空,则创建 * * @author k * */public class SingleA { // 定义私有并静态的本类对象实例 private static SingleA mInstance; // 私有化构造函数 private SingleA() { } // 静态方

2016-10-30 15:07:51 591

转载 VS调试 不会命中断点,源代码与原始版本不同的解决办法

VS调试 不会命中断点,源代码与原始版本不同的解决办法

2016-04-26 10:25:02 15854

转载 Android apk动态加载机制的研究(二):资源加载和activity生命周期管理【转】

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客)前言为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问

2016-03-06 12:25:56 1015

转载 Android apk动态加载机制的研究【转】

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客)背景问题是这样的:我们知道,apk必须安装才能运行,如果不安装要是也能运行该多好啊,事实上,这不是完全不可能的,尽管它比较难实现。在理论层面上,我们可以通过一个宿主程序来运行一些未安装的apk,当然,

2016-03-06 12:23:57 733

原创 代理模式Proxy深入 动态代理

前一篇文章中介绍了代理模式的概念和一个基本案例代理模式Proxy入门 之帮你追求心仪的姑娘,接下来继续深入学习代理模式一个变种,动态代理。首先来回顾下代理概念:为一个对象提供代表以控制该对象的访问。上一文案例中代理仅仅是做到代理访问对象的方法,而动态代理是一种根据访问权限决定客户是否可访问对象的代理。UML图使用Java API的代理,创建一个动态代理(代理保护)动态代理是在运行时动态创建的一个代

2016-03-06 01:56:12 1875 3

原创 代理模式Proxy入门 之帮你追求心仪的姑娘

使用案例话说村里有个姑娘叫小芳,长得好看又漂亮。不少男孩想追她,送花、约她看电影、共进晚餐都被一一拒绝了,人家小芳是个矜持的姑娘,毕竟跟这些男孩也不熟啊。这时,着急的男孩想到一个办法,通过一个代理人(媒婆,或是小芳的闺蜜)替男孩约小芳。代理模式 Proxy为一个对象提供一个代表以控制对这个对象的访问。UML图 Subject :抽象主题角色,抽象主题类可以是抽象类,也可以是接口,声明l了真实对象和

2016-03-06 00:39:24 1070

转载 深入探讨 Java 类加载器【转】

深入探讨 Java 类加载器类加载器(class loader)是 Java™中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi™中的应用。34 评论:

2016-03-02 20:24:25 854

转载 C# Visual Studio环境下进行单元测试【转】【整理】

原文图片是在Visual Studio 2010环境下,本人在2013环境下测试步骤也大致相同,特此整理;单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。C#_在VS2010下进行单元测试转载自 http://

2016-03-02 11:04:57 2950

转载 进程(process)和线程(thread)图文并茂很形象的讲解【转】

转自 http://blog.jobbole.com/38696/进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的

2016-01-21 12:46:11 1649

转载 SVN分支/合并原理及最佳实践

SVN分支/合并原理及最佳实践使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项工作,突然发现这玩意整不明白很难

2016-01-19 15:00:21 757

原创 写给2016

公元2016年1月1日 ,天还没亮就早早的醒来,回想过去的2015,惶恐~再也睡不着了2012大四,开始软件开发的工作,2013年大学毕业,离开家乡,北上广深。时间过得飞快,不知不觉干了三年程序员,三年的经验,但似乎离大神还有距离。外包项目做了一个有一个,曾经心目中高大上的软件设计变成重复的搬砖,而我目前所谓的提升大概就是成了搬砖同时指导监督小弟搬砖的小工头角色吧。问自己,难道

2016-01-01 08:48:45 880 3

原创 设置软键盘的Enter图标&监听&两次响应的问题

设置软键盘的Enter图标&监听&两次响应的问题 需求场景:在开发中对某个Edittext输入完成后,希望不通过在UI定义按钮,而是在软键盘右下角Enter键替代多余按钮的操作1.设置软键盘的Enter图标EditText通过设置android:imeOptions来改变默认的Enter”文本或者样式。如下图:右下角默认 回车通过设置变成了“发送” 和搜索 这里举几个常用的常量值:acti

2016-01-01 08:19:02 1291

原创 从源码角度看for循环和foreach的区别

for循环和foreach的区别

2015-12-27 23:23:25 5742 1

原创 Crash: 处理UncaughtExcption,捕获未处理异常信息,界面友好提示用户

Crash: 处理UncaughtExcption,友好提示用户,捕获错误信息相信大家在APP使用过程都遇到过,应用程序异常崩溃,屏幕一黑闪退,这种情况称之为Crash。出现的原因是由于程序运行过程中产生了未知异常UncaughtException,当程序发生Crash时,系统会杀死程序,出现闪退,这种情况的用户体验不好,而且开发人员也不能知道用户发生了何种异常。 那么问题来了,发生Crash时我

2015-12-27 21:32:40 1458

转载 超全面总结!深聊MATERIAL DESIGN引领的设计趋势

超全面总结!深聊MATERIAL DESIGN引领的设计趋势推荐: cyRotel    2014/08/13    in PS 教程 & 设计文章   转自:http://www.uisdc.com/material-design-trends辉达:两个月前,Google I/O大会发布了Android L并推出Material Design,重新统一了G

2015-12-20 10:56:11 1316

原创 别了Eclipse,开发Android编译器常用配置

Eclipse常用配置整理一看标题,也许各位看官已忍不住想吐槽,“都什么年代了,您还在在用着Eclipse的这种卡的掉渣的古董开发,Google都停止服务了好吗...”,事实确实如此,哥将近三年的Android开发都是用Eclipse开发,确实也有很多不舍,但大势所趋,Github上大多优秀开源代码都是Android studio,所以,在抛弃之前,整理这些Eclipse常用的配置,也算是个小

2015-11-13 23:51:10 3271

原创 C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)

C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)步骤:1。运行--〉cmd:打开cmd命令框2。在命令行里定位到InstallUtil.exe所在的位置InstallUtil.exe 默认的安装位置是在C:/Windows/Microsoft.NET/Framework/v2.0.50727里面,

2015-11-05 16:04:55 4153

转载 23种设计模式【转】

目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组合)9. Decorator(装饰)

2015-11-03 18:18:13 757

转载 mysql 的类型转换函数cast的用法

mysql 的类型转换函数cast的用法CAST(expr   AS   type),   CONVERT(expr,type)   ,   CONVERT(expr   USING   transcoding_name) CAST()   和CONVERT()   函数可用来获取一个类型的值,并产生另一个类型的值。  这个类型   可以是以下值其中的   一个

2015-10-26 15:23:13 935

原创 获取android顶部状态栏高度的两种方式

android顶部状态栏 获取的两种方式一般情况下我们通过调用下面方法即可获得状态栏的高度,同理也可以获得底部虚拟键盘的高度/** * 获取状态栏高度 * * @return */public int getStatusBarHeight() { // Rect rect = new Rect(); getWindow().getDecorView().getWi

2015-10-25 17:16:14 3133

转载 egit的安装与使用之一:安装egit并提交项目至GitHub【转】

MyEclipse10中egit的安装与使用之一:安装egit并提交项目至GitHub转载自:原文地址Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub

2015-10-18 15:25:52 719

原创 仿IOS底部选项效果--底部弹出PopupWindow,背景变为半透明效果

底部弹出PopupWindow,背景变为半透明效果,采用两种方式实现 转载请注明出处:http://blog.csdn.net/LANG791534167/article/details/48985101先来看看运行效果图 [方式一]实现从底部弹出PopupWindow原理:定义一个高度为wrap_content的PopupWindow布局文件,根据屏幕底部的位置显示在Bottom1.首

2015-10-09 00:36:39 6275 1

转载 最全Android开发常用工具类【转】

最全Android开发常用工具类

2015-10-08 22:49:59 1509

原创 break 和continue以及return的区别

break 和continue以及return的区别break 作用结束当前所在层的循环continue 结束本层的本次循环return 结束所在多级循环,返回

2015-10-08 21:39:29 816

转载 Android屏幕适配全攻略(最权威的官方适配指导)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获!Android屏幕适配出现的

2015-08-24 13:22:11 1325

转载 优秀Android博客大全,整理了国内外大神博客/Github地址,是学习Android进阶的首选[转]

国内外优秀Android博客大全,覆盖了国内外大神博客地址,Github地址,是学习Android进阶的首选国内:昵称Github博客介绍邓凡平 http://blog.csdn.net/innost阿拉神农魏祝林 http://blog.csdn.net/android_tutor

2015-07-08 13:46:56 3938

转载 ListView (5)打造通用ViewHolder 和Adapter

>在我的[ListView (3) 之适配器 ArrayAdapter/SimpleAdapter/BaseAdapter](http://blog.csdn.net/lang791534167/article/details/45081137)一文中提到,通过继承BaseAdapter实现的自定义适配器,使用ViewHolder持有convertView布局中的控件,减少了findVie

2015-04-26 15:44:56 1408 1

原创 ListView (4)滚动事件/上拉刷新/下拉刷新的实现

本篇笔记整理了ListView上拉加载更多及下拉刷新的实现,两者实现都需要用到 OnScrollListener 的事件监听,转载请注明出处ListView的 滚动事件监听实现滚动监听,首先需要通过实现OnScrollListener 接口,重写 onScrollStateChanged 和 onScroll两个方法,分别用于监听ListView滑动状态的变化,和屏幕滚动onScrollStat

2015-04-26 11:39:07 4017

原创 ListView (3) 之适配器 ArrayAdapter/SimpleAdapter/BaseAdapter

ListView (3) 之适配器 AdapterArrayAdapter/SimpleAdapter/BaseAdapter的使用 Android中通过Adapter为AbsListView列表控件提供基础数据,Adapter只是一个接口,它派生了ListAdapter和SpinnerAdapter,其中ListAdapter为AbsListView提供列表,SpinnerAdapter为Ab

2015-04-16 21:20:18 1795

原创 ListView (2) 常用UI属性

ListView (2) 常用UI属性总结了一些常用的[ListView]控件UI属性,以后碰到陆续添加:分割线属性dividerItem按下颜色listSelector右侧快速滑动标签fastScroll去除ListView滑到顶部和底部时边缘的黑色阴影按下阴影显示Item之上drawSelectorOnTop分割线属性dividerListView分割线的高度和颜色设置<!-- 缓

2015-04-15 22:36:44 1022

图解HTTP_高清彩色版 带目录书签PDF (【日】上野 宣 )

图解HTTP_高清彩色版 带目录书签PDF ps: 每个章节穿插了大量漫画,轻松易懂,Http网络入门的首选书籍 第 1 章 了解 Web 及网络基础 1.1 使用 HTTP 协议访问 Web 1.2 HTTP 的诞生 1.3 网络基础 TCP/IP 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS 1.5 负责域名解析的 DNS 服务 1.6 各种协议与 HTTP 协议的关系 1.7 URI 和 URL 第 2 章 简单的 HTTP 协议 2.1 HTTP 协议用于客户端和服务器端之间的通信 2.2 通过请求和响应的交换达成通信 2.3 HTTP 是不保存状态的协议 2.4 请求 URI 定位资源 2.5 告知服务器意图的 HTTP 方法 2.6 使用方法下达命令 2.7 持久连接节省通信量 2.8 使用 Cookie 的状态管理第 3 章 HTTP 报文内的 HTTP 信息 3.1 HTTP 报文 3.2 请求报文及响应报文的结构 3.3 编码提升传输速率 3.4 发送多种数据的多部分对象集合 3.5 获取部分内容的范围请求 3.6 内容协商返回最合适的内容第 4 章 返回结果的 HTTP 状态码 4.1 状态码告知从服务器端返回的请求结果 4.2 2XX 成功 4.3 3XX 重定向 4.4 4XX 客户端错误 4.5 5XX 服务器错误 第 5 章 与 HTTP 协作的 Web 服务器 5.1 用单台虚拟主机实现多个域名 5.2 通信数据转发程序 :代理、网关、隧道 5.3 保存资源的缓存第 6 章 HTTP 首部 6.1 HTTP 报文首部 6.2 HTTP 首部字段 6.3 HTTP/1.1 通用首部字段 6.4 请求首部字段 6.5 响应首部字段 6.6 实体首部字段 6.7 为 Cookie 服务的首部字段 6.8 其他首部字段 第 7 章 确保 Web 安全的 HTTPS 7.1 HTTP 的缺点 7.2 HTTP+ 加密 + 认证 + 完整性保护 =HTTPS 第 8 章 确认访问用户身份的认证 8.1 何为认证 8.2 BASIC 认证 8.3 DIGEST 认证 8.4 SSL 客户端认证 8.5 基于表单认证 第 9 章 基于 HTTP 的功能追加协议 9.1 基于 HTTP 的协议 9.2 消除 HTTP 瓶颈的 SPDY 9.3 使用浏览器进行全双工通信的 WebSocket 9.4 期盼已久的 HTTP/2.0 9.5 Web 服务器管理文件的 WebDAV第 10 章 构建 Web 内容的技术 10.1 HTML 10.2 动态 HTML 10.3 Web 应用 10.4 数据发布的格式及语言第 11 章 Web 的攻击技术 11.1 针对 Web 的攻击技术 11.2 因输出值转义不完全引发的安全漏洞 11.3 因设置或设计上的缺陷引发的安全漏洞 11.4 因会话管理疏忽引发的安全漏洞 11.5 其他安全漏洞

2019-05-30

Swift编程权威指南(第2版)带目录高清PDF版

Swift编程权威指南(第2版) 有索引目录结构 高清PDF版

2019-05-29

LayoutInflater源码分析 inflate方法的区别

LayoutInflater源码分析 inflate方法的区别

2015-04-15

eclipse插件:OpenExplorer

eclipse插件:OpenExplorer快速打开文件目录。 右键打开

2015-04-11

android设计规范-Google非官方设计指导手册中文版1.0

[超清pdf]android设计规范手册-有利于大家进一步了解android设计思想,一味专研代码的之余也学点Google设计规范和设计思想,程序员成功变身产品设计师 Google非官方设计指导手册中文版1.0

2015-01-09

FragmentTabHost的使用 (状态保存)

FragmentTabHost Fragment 状态保存

2014-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除