自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Chin_Style的博客

外面天气晴朗,看书增长知识

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

原创 自定义View精炼详解第(三)课:onDraw()方法解析和小白级案例实现

一、前期基础知识储备:在笔者的《 View绘制流程—自定义View相关》的文章中,讲解到,Android中最常见的自定义步骤:①自定义View属性;②在View的构造方法中获得自定义的属性;③重写onMeasure(); --> 并不是必须的,大部分的时候还需要覆写④重写onDraw();以上四步刚好对应了笔者的《自定义View精炼详解第(一)课:基础理论部分和简单小实现》中的描述:最常见也...

2018-03-31 23:40:18 667

原创 Android动画精炼详解第(二)节:属性动画讲解及实现

一、前期基础知识储备上节讲解的《Android动画精炼详解第(一)课:帧动画、补间动画讲解和示例》讲解了最常见最常用的三种动画的分类:帧动画、补间动画、属性动画,并带领大家简单实现了帧动画和补间动画,接下来的本节内容将为大家继续讲解第三种动画——属性动画。属性动画(Property Animation)是在Android3.0中引入的,为什么要引入属性动画呢?(1)补间动画的缺陷:在补...

2018-03-31 22:03:25 482

原创 Android动画精炼详解第(一)节:帧动画、补间动画讲解和示例

一、前期基础知识储备(1)动画的类型:总的来说,Android动画可以分为两类,最初的传统动画和Android3.0之后出现的属性动画。传统动画又包括帧动画(Frame Animation)和补间动画(Tweened Animation)(2)传统动画分析,官方文档描述:android.view.animationProvides classes that handle tweene...

2018-03-30 22:01:57 367

原创 Android主题和样式精炼详解

一、前期基础知识储备(1)样式Style定义,上官方文档:Resources.ThemeThis class holds the current attribute values for a particular theme. In other words, a Theme is a set of values for resource attributes; these are used in ...

2018-03-30 17:06:26 293

原创 自定义View精炼详解第(二)课:自定义属性部分和入门级实现

一、自定义View第一课:简单实现自定义按钮回顾(1)在第一节《自定义View精炼详解第(一)课:基础理论部分和简单小实现》的讲述中,我们掌握了自定义View的概念和三种的实现自定义View的方式:①继承现有控件实现;②继承多个现有控件实现,即继承现有布局实现;③继承根View实现。其中前面①②是开发中最为常见,也是最为有效的自定义View方式,③是完全的自定义一个不存在的控件,其排版、优化、效率...

2018-03-30 13:46:52 225

原创 draw9patch工具和9-patch图片精炼详解

一、前期基础知识储备(1)9-patch图片定义——Android SDK提供的解决应用开发过程中和UI相关的制作自适应背景图片的问题(就是一个使用9-patch制作的PNG图篇拉伸之后,失真幅度更小,非常适合开发使用)。实际工作中,会由UI设计师做好,然后开发者直接使用即可;若是开发者想自己平时开发练习使用,也可以学习如何制作9-patch图片。(2)Android studio默认安装...

2018-03-29 23:57:05 8165 1

原创 自定义View精炼详解第(一)课:基础理论部分和简单小实现

一、前期基础知识储备(1)自定义View的定义:直接使用现有的控件满足不了开发者的需求,比如一些统计用的图表——折线图、柱状图、饼图等等,这些图表直接使用现有的控件是实现不了,那么开发者为了满足万恶的产品经理的需求和可恶的交互设计师的要求,就必须搞定。搞定的方式,就是自己定义好/封装好一个/多个控件,去实现效果。当然,这个实现效果的过程是很有成就感的。(2)自定义View的方式:现有的自定义Vie...

2018-03-29 22:38:12 236

原创 数据共享之ContentReslover类精炼详解

一、前期基础知识储备跨程序共享数据,跨程序共享数据,跨程序共享数据,重要的事情说三遍,不是跨线程,也不是跨进程,而是跨程序。可能,我们会有些疑惑,为什么要将我们程序中的数据共享给其他程序呢?当然,这个是要视情况决定的,像一些重要的数据,隐私数据是不能共享的。但是有一些可以让其他程序进行二次开发的基础性数据,我们还是可以选择共享的。例如系统的电话簿程序,它的数据库中保存的很多联系人的数据,如果这些数...

2018-03-28 22:16:45 803

原创 LinearLayout和RelativeLayout属性和性能详解

一、前期基础知识储备上,官方文档   由上面的官方文档,我们可以看出,两个布局方式的相同,都是继承自View.Group,是一种容器控件,LinearLayout的布局层次比较简单,方向和位置都比较容易控制,而相对布局RelativeLayout 对于其内子控件提供了更加丰富的布局层次和布局位置。二、两者在属性上的异同点共有属性:java代码中通过btn1关联次控件android:id="@+...

2018-03-28 17:20:25 8708

原创 刷新View视图的两种方法—invalidate()和postInvalidate()的区别和使用详解

一、前期基础知识储备Invalidate英文释义:刷新上,官方文档:由官方文档,我们可以知道,invalidate()和postInvalidate()方法都是用来刷新View界面/View视图的。1)区别:invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把...

2018-03-28 14:58:06 7492

原创 requestLayout()与onLayout();onDraw()与drawChild()的区别和联系

一、前期知识储备这个问题实际上是来自猎豹的一道Android面试题,题中实际包含了两层含义:①requestLayout()和onLayout()的区别和联系?②onDraw()和drawChild()的区别和联系?二、四个方法两两之间的区别首先,上官方文档,掌握上述四个方法的定义:由官方文档,我们可知,调用requestLayout()方法的时机是:当前View发生了一些改变,这个改变使得现有的...

2018-03-28 13:37:59 4230

原创 如何保证Service在后台不被杀死?

一、前期基础知识储备(1)为什么要保证后台Service不被杀死?提高应用存在感。对于大厂的应用来说,其程序“活着”不是问题,但是为了带来更好的用户体验,提高用户粘性,就需要尽可能调用程序更多的服务,这样才能带来更多的用户体验(不一定更好,但是数量占优);对于小家来说,尽可能的让程序“活着”是它们的第一要务,通过后台服务的方式让应用存活在用户手机里也是一种存活的方式。(2)后台Service真的可...

2018-03-27 21:27:26 5489 1

原创 Service与Activity之间通信的2种方式

一、前期基础知识储备(1)Service基础知识部分——参见笔者《Service精炼详解》,文章对于Service的简介、分类、实现、注意事项均有比较详细的说明;(2)为何要进行Secvice和Activity的通信?常用的服务一般是普通服务,即是不可交互的后台服务,该服务在活动中启动,但是启动之后,活动基本就和服务没有什么关系了。确实如此,我们在普通服务里是用startService()方法来启...

2018-03-27 20:33:08 33609 3

原创 什么情况导致OOM问题及如何优化

一、前期基础知识储备(1)OOM定义—out of memory,内存溢出,一个程序中,已经不需要使用某个对象,但是因为仍然有引用指向它垃圾回收器就无法回收它,当该对象占用的内存无法被回收时,就容易造成内存泄露。多个内存泄漏最终会导致内存溢出,即OOM。(内存泄漏和内存溢出两者之间的关系,可参考笔者之前的文章《Android中内存泄漏详解》)(2)Java内存概念、内存泄漏相关知识点都可以参考笔者...

2018-03-27 17:26:36 6143

原创 ANR问题定位及优化

一、前期基础知识储备(1)ANR错误定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作“应用程序无响应”(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。默认情况下,在Android中Ac...

2018-03-27 15:28:16 3855

原创 Android中内存泄漏超级精炼详解

一、前期基础知识储备(1)什么是内存?JAVA是在JVM所虚拟出的内存环境中运行的,JVM的内存可分为三个区:堆(heap)、栈(stack)和方法区(method)。栈(stack):是简单的数据结构,但在计算机中使用广泛。栈最显著的特征是:LIFO(Last In, First Out, 后进先出)。后来者居上。(跟线程中队列的顺序恰好相反)栈中只存放基本类型和对象的引用(...

2018-03-27 11:46:46 3238 1

原创 Android单例模式详解

一、前期基础知识储备(1)设计模式定义:Design pattern,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式已于他人于系统都是多赢的;设计模式使代码编程真正工程化;设计模式是软件工程的基石脉络。(2)设计模式分类:设计模式总体上可以分为三种,即创建型模式、结构型模式、行为型模式,每...

2018-03-27 10:24:33 1813

原创 利用synchronized实现线程同步

一、前期基础知识储备(1)线程同步的定义:多线程之间的同步。(2)多线程同步原因:一个多线程的程序如果是通过Runnable接口实现的,则意味着类中的属性将被多个线程共享,由此引出资源的同步问题,即当多个线程要操作同一资源时,有可能出现错误。(3)实现多线程同步的方式——引入同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了,直到解锁后才可以访问。——这样做的结果,所有线程...

2018-03-26 22:36:13 1556

原创 View绘制流程—自定义View相关

一、前期基础知识储备了解View的绘制流程很大程度上可以帮助我们自定义View的实现,那么本篇文章就将从实现自定义View开始,了解自定义View的常见步骤,然后抓取自定义View的关键步骤,然后在View的绘制流程中重点关注其实现方式。与常规的View绘制方式的分析有所不同(笔者还未达到那个水平,源码暂时扣不动,所以换了一个角度看待这个问题,有取巧嫌疑)(1)Android中自定义View的步骤...

2018-03-26 21:16:23 523

原创 Handler类中发送消息-post()和postDelay()方法精炼详解

一、前期知识储备(1)上官方文档:参见Handler类中的描述首先,post和postDelay都是Handler的方法,用以在子线程中发送Runnable对象的方法;其次,Android中post()方法可以直接在非UI线程中更新UI,不同与Handelr的Send类方法,需要进行切换;最后,两个方法在实现UI线程事件的时间上有所区别,postDelayed()方法用...

2018-03-26 18:17:20 28539

原创 Android事件分发机制精炼详解

一、基础知识储备在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要,这部分知识涉及的仍然以View为主,这也是初级应用层...

2018-03-26 14:14:55 647

原创 Activity四种启动模式常用场景

一、singleInstance常见应用场景:①手机拨号界面(QQ、短信这种涉及数字的都会用到手机拨号界面)②社交APP分享页面(微信、QQ、知乎)——作为外部App调用自己客户端程序的入口的Activity都会采用singleInstance启动模式。以下以社交分享页面为例: 上述图片中描绘了从相册分享图片到微信好友的整个过程共7张图,7个步骤:①打开小米手机相册APP,选中一张图片;②选中图片...

2018-03-25 21:54:35 2081

原创 Activity四种启动模式及onNewIntent()方法、taskAffinity属性分析

一、前期知识储备-Application,Task和Process的区别与联系①Application,翻译成中文时一般称为“应用”或“应用程序”,在android中,总体来说一个应用就是一组组件的集合。众所周知,android是在应用层组件化程度非常高的系统,android开发的第一课就是学习android的四大组件。当我们写完了多个组件,并且在manifest文件中注册了这些组件之后,把这些组...

2018-03-25 19:31:22 1821 1

原创 Handler、Thread、HandlerThread三者的区别

一、前期知识储备(1)Handler类,上官方文档,Handlerpublic class Handler.A Handler allows you to send and process Message and Runnable objects associated with a thread's MessageQueue. Each Handler instance is associ...

2018-03-25 15:59:34 41678 12

原创 Fragment精炼详解

一、前期基础知识储备(1)上官方文档:Fragmentpublic class Fragment.A Fragment is a piece of an application's user interface or behavior that can be placed in an Activity. Interaction with fragments is done through ...

2018-03-25 14:26:35 1017 2

原创 Activity 与 Window、PhoneWindow、DecorView 之间的关系详解

一、前期知识储备上图,通篇文章都是围绕这张图进行描述的,本篇文章尽量以简单的语言讲清Activity 与 Window、PhoneWindow、DecorView 之间的关系。Activity 的概念都比较熟悉,但是 Window、PhoneWindow、DecorView 这几个类并不常用,所以很多时候容易忽略了它们。其实在 Activity 的背后,它们都发挥着很重要的作用。         ...

2018-03-25 12:00:49 10141 1

原创 Service精炼详解

一、前期知识储备——后台功能诺基亚Symbian操作系统特点:比起一般的手机,它可以支持后台功能。那个时候是能够一边打电话、一边听音乐,一边后台挂着QQ,非常酷。在后来的智能手机市场中,IOS系统刚开始是不支持后台的,后来才逐渐意识到这个功能的重要性,加入了后台系统。而Android则是沿用了Symbian的老习惯,从一开始就支持后台功能,这使得应用程序即使在关闭的情况下仍然可以在后台运行。服务(...

2018-03-25 10:12:35 1581

原创 Android主线程阻塞处理及优化

一、前期基础知识储备当一个应用程序启动之后,android系统会为这个应用程序创建一个主线程(Main Thread),它负责渲染视图,分发事件到响应监听器并执行,对界面进行轮询的监听。因此,一般也叫做“UI线程”(UI Thread)。android系统不会给应用程序的多个元素组件建立多个线程来执行。一个视图(Activity)中的多个view组件运行在同一个UI线程当中。因此,多个view...

2018-03-24 19:09:52 24749 3

原创 Java中什么方法导致线程阻塞

一、为什么引入线程阻塞机制?为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持。阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系...

2018-03-24 16:45:41 36768 4

原创 图析:String,StringBuffer与StringBuilder的区别

一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可...

2018-03-24 15:03:07 76016 29

原创 Java内部类精炼详解—由Android点击事件开局讲解

一、前期基础知识储备——Android开发中常见的与内部类相关的操作:以button点击事件的实现为例—Android中实现button点击事件的监听方法有很多种,这里总结了常用的四种方法:(1)匿名类(2)匿名内部类,与(1)类似,更为常用(3)内部类中实现OnClickListener接口(4)主类中实现OnClickListener接口上代码,实现上述四种方法:(1)使用匿名类实现butto...

2018-03-24 13:23:57 341

原创 Activity Lifecycle—活动生命周期详解

一、前期基础知识储备上官方文档:Activity LifecycleActivities in the system are managed as an activity stack. When a new activity is started, it is placed on the top of the stack and becomes the running activity -- th...

2018-03-24 10:26:22 5145

原创 Android进程和线程详解

一、前期基础知识普及(1)苹果6双核手机跟其它4核和8核手机有什么区别?千万不要把苹果手机的硬件直接和安卓之类的手机相比较,根本没有可比性,苹果最新的6和6Plus都只是双核处理器,1GB运行内存 800万像素摄像头,但是苹果手机的强大之处是强大的系统优化、丰富的应用软件、高人一等的相机算法,使得它仍然是地球上使用体验最好的手机(没有之一,虽然我不是果粉,但我仍然不得不这么说)。(2)安卓手机双核...

2018-03-23 20:57:30 1939

原创 ToggleButton(状态开关按钮)及Swich(开关)使用详解

一、常见APP界面举例   左边的图片采自某小说阅读器注册页面—根据用户性别选择的不同 代表性别的图片会显示不同的状态——使用ToogleButton可以实现这个效果;右边的图片采自某Q设置页面—用户可以在里面进行一系列应用设定——使用Switch可以实现这个效果。二、ToggleButton和Switch介绍状态开关按钮(ToggleButton)和开关(Switch)也是由Button派生出来...

2018-03-22 22:10:27 39859

原创 Android开发图标尺寸详解

一、开发中的实际情况(促进理解):Android开发中一个很重要的组成,就是开发者和UI设计师的配合,这关乎到APP界面部分——吸引用户的直接手段,那么在实际开发中,开发者和设计师是如何配合的呢?第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界面强相关的工作,以最常见的“back”按钮为例,UI设计师从无到有的具体实现步骤:①在coreldraw或者Sket...

2018-03-21 20:05:06 7523

原创 this关键字和实体类的总结

在Android开发中,很多时候都会涉及到实体类的应用,实体类中简单说就由知识点“this关键字+getter/setter方法构成”。下面就来总结一下Android开发中实体类的两个知识点的应用:一、this关键字this是Java中的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格...

2018-03-20 20:05:34 1368

原创 Android各版本 发布时间 及对应API(2020.9.9截至Android最新版本 11)

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节.简单来说,就是一套可供调用的系统接口.比如地图类API—百度地图API,应用类API—豆瓣API,系统自带的WI-FI API和多媒体API。以下是Androi...

2018-03-20 08:59:56 46485 1

原创 Android SDK 探索

《Android群英传》“配置好Andorid SDK,就等于已经配了一把好枪,可以准备上阵杀敌了。但是别忘啦,我们还得买子弹!这里的子弹,自然是开发最重要的SDK开发工具”在结合官方文档的相关说明:Installing the SDkYou should have already downloaded the Android SDK. Now you need to set up your de...

2018-03-18 19:12:21 216

原创 Error:Execution failed for task ':app:processDebugResources'.个人已解决

个人问题出现场景:在编写ListView列表时,主类中初始化数据时,R报错,找不到该资源文件个人问题出现原因:是res资源下drawable文件夹中放置的图片有问题。(Goole了一下,发现每个人问题可能不一样)drawable官方文档说明:Drawable ResourcesSEE ALSO2D GraphicsA drawable resource is a ...

2018-03-17 13:59:18 2477

AVRCP蓝牙协议.pdf

初次接触蓝牙开发的同学,可以了解一下Avrcp的相关理论知识,包括各个版本Avrcp协议的变化,及其他相关的蓝牙协议。

2021-05-26

usaHigh.svg

usa 的SVG图片

2019-10-24

chinaHigh.svg

china 的SVG图片

2019-10-24

Android开发内功篇—Java开发实战经典

没错,就是你在知乎上看见大家都在推荐的Java实战方面的书。带目录。该书是一本综合讲解Java核心技术的书籍,在书中使用大量的代码及案例进行知识点的分析与运用,并且给出一些比较成熟的开发步骤,帮助读者更好地进行Java的开发。

2018-03-20

空空如也

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

TA关注的人

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