- 博客(14)
- 资源 (5)
- 收藏
- 关注
原创 Android Q深色模式源码解析
关注我的简书个人博客原文链接 一、简介鉴于Android Q 适配如火如荼的情况,我们今天也来讲讲Android Q全新的深色主题背景。不过该项功能,魅族已经推出两年多了,只不过名字我们叫夜间模式,也可见Google有点反借鉴国内厂商的意思。附上两张效果图:闲话到此为止,我们还是来说说Android Q深色模式的适配方式跟实现原理吧。二、如何开启从文档上我们可以可知,打开深色模式有三...
2019-11-05 16:57:12 5565
原创 Java中List的排序
第一种方法,就是list中对象实现Comparable接口,代码如下:public class Person implements Comparable { private String name; private Integer order; /** * @return the name */ public String getName
2016-03-21 16:55:59 316
原创 Android 调试之打印堆栈
在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。方法如下:1.在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么
2016-03-01 19:46:02 875
原创 从零快速搭建Android项目
好了,本文只作为Android开发工作的一个记录。记录项目从零开始要处理的都有哪些工作。废话不多说,直接进入正题1.概要设计1.1 模块划分根据需求和原型设计,可能的模块划分如下:注册登录模块用户模块帖子模块媒体(图片+视频)模块相册模块……
2016-01-31 23:39:35 589
原创 C++指针的概念
指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; in
2016-01-26 16:54:51 426
原创 C++中引用(&)的用法
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅 是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖 引玉的作用。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完
2016-01-26 16:04:18 651
原创 Android代码优化Android Support Annotations
如果你还没有听说过Android Support Annotations 函数库,你将错过一个整洁的新软件包,它有助于你捕获程序中的bugs。该函数库包含了许多的Java注解,用于帮助Android Studio检测代码中可能存在的错误,并报告给开发者。注解类型有很多种,本文将只介绍其中几种,请一定要自己阅读文档以了解本文未介绍的其他注解类型。@NONN
2015-07-23 23:03:13 672
转载 断点调试知多少
大家肯定都用过Eclipse的调试的功能,在调试的过程中自然也无法避免要使用断点(breakpoint),但不知是否对Eclipse中各类断点都有所了解。本篇图文并茂地介绍了Eclipse中全部类型的断点,及其设置,希望对大家有所帮助。1. 示例程序BreakpointDemo是一个臆造的应用程序,只是为了便于讲解Eclipse中各类断点的使用罢了。其代码如下图所示,Break
2015-07-20 11:08:53 526
原创 MVP模式的优缺点
随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Model-View-Presenter)模式应运而生。
2015-06-29 11:10:39 14853
转载 JVM加载class文件的原理机制
JVM加载class文件的原理机制1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序员自定义的类 3.类装载方式,有两种 1.隐式装载, 程序在运行过程中当碰到通
2015-05-03 18:27:48 488
原创 Android代码优化技术
1.Java内存控制 对于字符串操作而言如果需要连加这样的操作建议使用StringBuilder,经过调试不难发现如果你的字符串每次连加,使用String需要的内存开销会远大于StringBuilder,然后Android手机常规的运行内存大约在128MB左右,对于运行多任务就需要考虑了,Android开发网提示因为Java有GC不需要手动释放那么分配的时候就要格外的小心,频繁的GC操作仍然是
2015-05-03 18:13:07 440
转载 什么是死锁?如何避免死锁?
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。虽然进程在运行过程中,可能发生死锁,但死锁的发生也
2015-05-03 17:42:18 585
原创 Java的集合类
集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。(1)集集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的
2015-05-03 17:08:33 427
原创 Android中Invalidate和postInvalidate和requestLayout的区别
requestLayout:当view本身已经确定不再适合现有的区域时,该View本身调用这个方法要求Parent View重新调用它的onMeasure onLayout方法来重新设定自己的位置,特别的当Layout parameter已经发生变化 时,并且他的值还没有应用到view上,特别适合调用该方法。invalidate:view本身调用迫使view重画,是在ui线程中调用post
2015-05-03 15:04:53 504
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人