- 博客(32)
- 资源 (4)
- 收藏
- 关注
原创 2021-07-22
内部类实例化报错is not an enclosing class先上代码:public class Test{ public static void main(String[] args) { //错误写法 Outer.Inner innerError = new Outer.Inner(); //正确写法 Outer outer = new Outer(); Outer.Inner innerFirst =
2021-07-26 11:00:13 296 1
原创 抽象工厂
构建过程和调用层相分离,适用于产品族比较多。 代码示例:public interface IFactory{ IProduct create();}public class Factory1 implements IFactory{ @Override public IProduct create() { return new Product1(
2018-02-03 18:14:49 323
原创 创建型模式——工厂方法模式
工厂方法模式(Factory Method),又称为虚拟构造子模式(Virtual Constructor)或者多态性工厂模式(Polymorphic Factory),定义一个用于创建产品对象的工厂接口,将实际创建工作推迟到子类中,允许在不修改具体工厂角色的情况下引进新的产品。 类图: 示例代码:public interface Creator{ public Prod
2018-01-30 00:37:55 310
原创 创建型模式——简单工厂模式
简单工厂模式(Simple Factory),也可称做静态工厂方法模式(Static Factory Method),由一个工厂对象根据传入的参量决定创建出的哪一种产品类的实例,免除客户端直接创建产品对象的责任,实现对责任的分割。 类图: 示例代码:public interface Product{}public class ConcreteProduct{ pub
2018-01-30 00:04:51 296
原创 UML基础
本人主要使用Java编程语言,它是一门面向对象的编程语言。做开发时,动手写之前,需要先做一番面向对象设计,这时记录设计结果就用到UML(统一建模语言),这里面有一些概念是画图所必须了解的。一、类图表示类之间的关系有好几种:1、泛化,一种继承关系,表示一般与特殊的关系,指定子类如何特化父类的所有特征和行为。(带空心三角形的实线,箭头指向父类) 2、实现,一种类与接口的关系,表示类
2018-01-27 23:12:46 241
原创 2017年-2018年,生活方式的思考
2017年,这一年,我成为了一位父亲;这一年,我成为了一个游戏迷;这一年,我成为了一个堕落者;这一年,我成为了一个安卓荒废者;这一年,我成为了一个不合格的合格后台工程师;这一年发生了太多事,这一年,提供给我的就是人生,工作怎么来过的思考。 我的女儿,乐乐,大名杨怡,来到了这个世界,我又激动,又慌张。我穷我所及,为她做事,努力学习做一位父亲,来适应这个严肃的角色。也有了一些领悟,自己的出生,对于父
2018-01-27 22:26:53 434
原创 Universal Image Loader 学习笔记-图片加载
UIL在使用的时候都是一行代码搞定,那么,究竟其中做了多少事情么,还是要从源码中一探究竟。
2016-12-29 11:09:15 380
原创 Universal Image Loader 学习笔记-图片显示选项
UIL除了唯一一次的全局配置之外,在每次提交一个图片显示任务时,都可以定制等多的选项。当然,如果不进行定制的话,将采用全局配置中的默认显示选项。
2016-12-19 18:03:56 412
原创 Universal Image Loader 学习笔记-框架配置
UIL框架是强大的、灵活的,很重要的一点在于各种配置。概述ImageLoader的配置(ImageLoaderConfiguration)是应用程序的全局性的,你只能设置一次。所以,一般在自定义的Application类的onCreate()中进行配置,当然也可以在一个Activity中配置(只要在使用之前配置并且只配置一次)。配置建造器中的所有的选项都是可选择的,大家可以只使用自己想要定制的选项。
2016-12-15 16:57:44 489 1
原创 网络请求框架Retrofit的基本使用
公司的产品使用的网络请求框架是AsyncHttpClient,考虑到Google在Android6.0版本时,将HttpClient的请求框架移除了,所以预研一下新的框架,现在网络请求方面性能最好的应该是OKHttp,然后呢,今天介绍的Retrofit是对OKHttp进行了封装,使用起来更方便了。
2016-12-15 10:59:07 537
原创 Universal Image Loader 学习笔记-基本使用
虽然,UIL框架从2015年11月27号就已经不在更新了,但是作为学习安卓以来的一款重要的框架,并且现在的项目还在使用它,所以还是很有必要专一学习学习,并且其功能真的很强大,对于提升架构能力大有益处。
2016-12-12 15:56:23 499 1
原创 解决Android应用启动时的黑白屏问题
公司做的一款APP,在启动的时候,会先白屏一会再显示启动页的内容,给人的体验很不好。所以,决定查找一下白屏的原因优化一下视觉体验。在度娘上搜索这个问题,确实很多同行都遇到了,并且都根据自己的理解给出了自己的解决之道。我经过实验之后,也确实解决了问题,在这里就总结一下,免得过几天就不认识了。
2016-11-28 12:05:25 1399
原创 判断Java文件输入流FileInputStream中是否有内容
获取的字符串是从一个文件中读取出来的,得到的是一个FileInputStream对象,所以只要判断这个FileInputStream对象即可。而FileInputStream中存储可读取内容大小的
2016-10-08 10:57:37 19847 1
原创 Shell编程学习笔记(1)-搭建Linux环境
由于笔记本上安装的是Win10,所以还需要使用虚拟机在电脑上装个Linux系列的操作系统,我使用的是Ubuntu-16.04。 虚拟机:VirtualBox-5.1.6-110634-Win 操作系统:ubuntu-16.04-desktop-amd64 注:ubuntu使用的镜像,提供一个镜像网址大全1、安装VirtualBox 安装下载下来的exe文件就行了,和平时装软件一样。
2016-10-02 15:33:55 584
原创 AndroidStudio中源代码查看
在Android开发中,我们有时渴望知道一些系统API的详细信息,以便更好的理解其实现原理、使用方法、注意事项等等,这时就用到今天说的这些小技巧了。 本人使用的IDE环境是Android Studio,版本2.1.2,相信其他版本与此配置一样。 以Context为例,按着Ctrl键,用鼠标左键点击Context,如果项目配置好了源代码查看环境的话,IDE会呈现Context.java的源文件。
2016-06-24 10:57:36 18336 3
原创 AndroidStudio构建工具Gradle的帮助文档
在开始使用Android Studio开发应用之后,知道其是采用Gradle构建项目的,但是对里面和gradle相关的文件和文件中的代码一直不理解,更不来知晓其出处,有幸读到一篇文章 从编程的角度理解gradle脚本﹘﹘Android Studio脚本构建和编程[魅族Degao] 才知道了个大概,在此记下文中的gradle帮助文档的地址,免得以后不好找。
2016-06-21 11:10:41 776 1
原创 Android打包代码混淆后的Mapping文件路径
大家在发布一个新版本时,如果采用了代码混淆,所生成的apk在反编译之后,会看到进行了混淆的代码中的类名、方法名等会变成单个英文字母,这样子可读性直线下降,起到代码保护的目的。不过,凡事有利也有弊,我们通常会在应用中集成一些应用监测的第三方工具,常见的友盟啦、听云啦,都可以帮助我们帮助我们上传应用崩溃日志啦,活跃用户啦等等。
2016-06-17 15:40:24 16445 4
原创 Espresso环境搭建及其基本使用
大家开发Java程序的时候可以使用JUnit进行程序的测试,现在有一款可以测试Android UI的框架,叫Espresso,在这,简单记录下环境搭建及其基本使用。
2016-06-15 16:39:04 2782
原创 Android 自定义控件(一)
对于一些项目中通用的视图,可以采取组合控件的方式定义成一个单独的控件,简化开发。常见的如头部视图,通用录音视图等。今天,记录一下此种方式。第一步,设计新控件的独有属性。在values文件夹中创建attrs.xml文件,添加属性。 第二部,创
2016-05-23 14:56:25 440
原创 使用dex2jar反编译APK中的classes.dex
先说下写这篇博文的初衷。 为了应用的代码不直接被他人窥视,我们一般都会在代码的时候进行代码混淆,这样子可以将原来的包名、类名、参数名等给替换成无意义的字母。而我们怎么知道代码混淆起效果了呢,自己把应用的安装包反编译一下就可以了。 我使用的反编译工具是dex2jar,反编译之后,项目中的classes.dex会相应的生成classes-dex2jar.jar文件(可使用jd-gui查看,工具下载地
2016-03-21 10:26:20 12324
原创 Activity的生命周期
越是细节的知识点,突然之间搞得糊里糊涂。Activity的生命周期就是老生常谈的基本知识点,但是,还是偶尔会脑子短路。写个博客做个日志,供后期查阅。一个Activity的生命周期包括: onCreate:完成设置视图和一些初始化操作。 onStart:Activity正在被启动,已经可见,但是无法和用户交互。 onResume:Activity进入可见并且显示到前台。 onPause:Act
2016-03-16 21:56:39 481
原创 Android-常见的通过意图调用系统应用
1、获取图片有时,我们需要从相册中获取一张相片,这个时候可以直接调用手机自带的相片选取器。获取图片代码Intent intent = new Intent();intent.setAction(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent,REQUEST_CODE_SE
2016-03-04 15:09:07 822
原创 Android登录页面的最佳实践
在应用开发的过程中,有次UI设计的页面让我为难了,要求页面如下: 左侧是标题,右侧是输入框,要求标题左对齐,输入框左右对齐,同时表单中标题字数长度不等。当时分析了常用的线性布局和相对布局之后都没有漂亮的解决办法。由于项目的时间要求,我只能让每一行都用线性布局,标题设定最大长度,这样子的缺点就是不同的手机上显示不一样。
2016-02-28 18:12:43 745
转载 Android 深入理解Android中的自定义属性(转)
1、引言对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现:自定义一个CustomView(extends View )类编写values/attrs.xml,在其中编写styleable和item等标签元素在布局文件中CustomView使用自定义的属性(注意namespace)在CustomView的构造方法中通过TypedArray获取ps:如果你对上述几
2015-04-26 21:10:43 475
转载 Android View的加载过程
大家都知道Android中加载view是从Activity的onCreate方法调用setContentView开始的,那么View的具体加载过程又是怎么的呢?这一节我们做一下分析。首先追踪一下代码:Activity中:public void setContentView(int layoutResID) { getWindow().setCo
2015-04-26 13:50:41 515
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人