
基础知识
文章平均质量分 91
Chin_style
试着把内容大声念出来,说话与倾听都会用到大脑的不同位置,与人交谈效果最好
展开
-
多分辨率适配终结者之约束布局ConstraintLayout,我佛了
一,前期基础知识储备大屏,全面屏时代到来,屏幕适配从未显得如此重要。如图,一个简单的付费界面,如果完全按照上图的标注来写,那么在传统16:9的手机上表现良好,但在大屏手机上表现就差强人意,无论使用相对布局还是线性布局,都无法做到完整的适配。在正式项目中,就采用了一个笨办法:根据分辨率比例,使用不同的布局: View view; if (mScreen...原创 2019-10-16 18:58:04 · 1680 阅读 · 1 评论 -
彻底变换PreferenceFragment样式和全局设置字体样式的解决方案
一、PreferenceFragment样式修改 新样式直接上图,原样式为白色样式,即为PreferenceFragment的默认样式:① 白底黑字;② SwitchPreference开关默认为蓝色;③ ListPreference列表默认为白色,选中状态为蓝色;④ 每个设置选项标题颜色为蓝色下图为新样式,彻底变换:① 黑底白色; ② SwitchP...原创 2019-04-27 15:44:18 · 3208 阅读 · 0 评论 -
startActivityForResult、setResult、onActivityResult用法精炼详解
一、前期基础知识储备(1)ActivityManger管理Activity启动startActivity(Intent intent),启动一个Activity最简单的方式。我们可能会以为startActivity()是一个类方法,启动activity就是针对activity的子类调用该方法。实际并非如此。Activity调用startActivity()方法时,调用请求实际发给了操作...原创 2018-06-10 11:45:15 · 8987 阅读 · 6 评论 -
Android广播接收器精炼详解—你所需要知道的广播
一、前期基础知识储备(1)什么是广播?广播在日常生活中就是用来通知一些消息,而Android系统为了方便一些消息的通知,也产生了广播的机制。Android的广播机制比较灵活,每一个应用程序都可以对自己感兴趣的广播进行注册,这样就只能收到自己想听的广播;这些广播可能来自于系统,也可能来自于其他应用程序。(来短信会产生广播、wifi变化也会产生广播...)广播可以实现不同app之间的通信,也可以实现同...原创 2018-04-10 20:36:58 · 720 阅读 · 1 评论 -
数据共享之ContentReslover类精炼详解
一、前期基础知识储备跨程序共享数据,跨程序共享数据,跨程序共享数据,重要的事情说三遍,不是跨线程,也不是跨进程,而是跨程序。可能,我们会有些疑惑,为什么要将我们程序中的数据共享给其他程序呢?当然,这个是要视情况决定的,像一些重要的数据,隐私数据是不能共享的。但是有一些可以让其他程序进行二次开发的基础性数据,我们还是可以选择共享的。例如系统的电话簿程序,它的数据库中保存的很多联系人的数据,如果这些数...原创 2018-03-28 22:16:45 · 843 阅读 · 0 评论 -
如何保证Service在后台不被杀死?
一、前期基础知识储备(1)为什么要保证后台Service不被杀死?提高应用存在感。对于大厂的应用来说,其程序“活着”不是问题,但是为了带来更好的用户体验,提高用户粘性,就需要尽可能调用程序更多的服务,这样才能带来更多的用户体验(不一定更好,但是数量占优);对于小家来说,尽可能的让程序“活着”是它们的第一要务,通过后台服务的方式让应用存活在用户手机里也是一种存活的方式。(2)后台Service真的可...原创 2018-03-27 21:27:26 · 5617 阅读 · 1 评论 -
Activity四种启动模式常用场景
一、singleInstance常见应用场景:①手机拨号界面(QQ、短信这种涉及数字的都会用到手机拨号界面)②社交APP分享页面(微信、QQ、知乎)——作为外部App调用自己客户端程序的入口的Activity都会采用singleInstance启动模式。以下以社交分享页面为例: 上述图片中描绘了从相册分享图片到微信好友的整个过程共7张图,7个步骤:①打开小米手机相册APP,选中一张图片;②选中图片...原创 2018-03-25 21:54:35 · 2566 阅读 · 0 评论 -
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 · 1060 阅读 · 2 评论 -
Service精炼详解
一、前期知识储备——后台功能诺基亚Symbian操作系统特点:比起一般的手机,它可以支持后台功能。那个时候是能够一边打电话、一边听音乐,一边后台挂着QQ,非常酷。在后来的智能手机市场中,IOS系统刚开始是不支持后台的,后来才逐渐意识到这个功能的重要性,加入了后台系统。而Android则是沿用了Symbian的老习惯,从一开始就支持后台功能,这使得应用程序即使在关闭的情况下仍然可以在后台运行。服务(...原创 2018-03-25 10:12:35 · 1620 阅读 · 0 评论 -
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 · 5278 阅读 · 0 评论 -
公告轮播条控件ViewFlipper精炼详解
一、前期基础知识储备ViewFlipper是安卓原生控件,平时开发中用到的次数不多,一次偶然看见的时候,发现对这个控件的印象一片空白,今天本节文章就是给自己补课,UI控件还是没有完全熟悉ε=(´ο`*)))唉!首先,看看官方文档中的描述:从官方文档中,我们可以看见ViewFlipper继承自ViewAnimator和FrameLayout,里面封装好了动画的实现逻辑,每次ViewFlipper中只...原创 2018-05-01 21:45:27 · 1024 阅读 · 0 评论 -
横向滑动视图HorizontalScrollView精炼详解
一、前期基础知识储备由于移动设备物理显示空间一般有限,不可能一次性的把所有要显示的内容都显示在屏幕上。所以各大平台一般会提供一些可滚动的视图来向用户展示数据。Android平台框架中为我们提供了诸如ListView、GirdView、ScrollView、RecyclerView等滚动视图控件,这几个视图控件也是我们平常使用最多的。本节内容我们来分析一下横向滚动视图Horizonta...原创 2018-05-01 17:57:49 · 30771 阅读 · 6 评论 -
ViewPager+PagerSildingTapStrip联合使用方法精炼详解
一、前期基础知识储备前面一篇文章里《ViewPager和ViewPager+Fragment联合使用方法精炼详解》,笔者详细介绍了,ViewPager的使用方式,包括和Fragment的搭配使用,基本上做到了一个仿微信的切换效果,但是实现方式不够优雅,要分别为菜单栏和ViewPager设置监听事件,处理起来稍显麻烦,今天本节文章将分析另一个控件PagerSlidingTapStrip,该控件+Vi...原创 2018-04-20 17:52:40 · 499 阅读 · 0 评论 -
ViewPager和ViewPager+Fragment联合使用方法精炼详解
一、前期基础知识储备使用了ViewPager, PagerSlidingTabStrip, SwipeRefreshLayout模仿Douban客户端的下拉刷新以及滑动的效果。ViewPager—视图滑动切换工具——通过手势滑动可以完成View的切换,一般是用来做APP 的引导页或者实现图片轮播——意味着ViewPager中经常放的东西有两个:①图片,实现图片轮播器;②View视图,实...原创 2018-04-20 15:36:24 · 6657 阅读 · 3 评论 -
使用Glide+Recycler加载展示网络图片精炼详解
一、前期基础知识储备笔者在前面两篇文章《图片加载库Glide精炼详解》、《最强大的列表滚动控件RecyclerView精炼详解》分别介绍了图片加载库Glide和列表滚动控件的常用用法,那么今天本节文章,就开始把两者组合在一起,用Glide请求网络图片,请求完之后将图片用RecyclerView显示出来。先分析一下思路:单独使用Glide和RecyclerView相信读者都没有问题,那么两者联合使用...原创 2018-04-20 12:44:25 · 2901 阅读 · 1 评论 -
最强大的列表滚动控件RecyclerView精炼详解
一、前期基础知识储备现在的手机应用,很多都会采用列表滚动的方式来加载和显示内容,微信、QQ、淘宝等应用就是其中的典型代表,每个用户每天都在打开这些应用,每天都在接触这种列表这种展示方式,和列表上线滚动加载信息这种交互方式,所以掌握好列表滚动控件是开发者的硬性要求。谷歌官方推出的列表滚动控件主要有两种ListView和RecyclerView,这两种滚动控件都十分的强大。先来看一下ListV...原创 2018-04-19 21:35:21 · 1419 阅读 · 1 评论 -
Android Scroll滑动效果精炼详解第(二)课:ViewDragHelper和简单实现QQ首页滑动效果
一、前期基础知识储备经过前面《Android Scrool滑动效果精炼详解第(一)课:基础理论和简单实现》的理论部分的讲解和实现的一个小示例,读者朋友应该对Android Scroll滑动效果有个基础的认知了,那么本节开始讲解实现滑动效果最重要的一种方法——使用ViewDragHelper类,通过ViewDragHelper,基本上可以实现各种不同的滑动、拖放需求,这个方法在《Android群英传...原创 2018-04-01 15:27:32 · 338 阅读 · 0 评论 -
Android Scroll滑动效果精炼详解第(一)课:基础理论和简单实现
一、前期基础知识储备Scroll英文释义:滑动效果(1)Scroller类:上官方代码:This class encapsulates scrolling. You can use scrollers (Scroller or OverScroller) to collect the data you need to produce a scrolling animation—for ...原创 2018-04-01 14:31:29 · 711 阅读 · 0 评论 -
ToggleButton(状态开关按钮)及Swich(开关)使用详解
一、常见APP界面举例 左边的图片采自某小说阅读器注册页面—根据用户性别选择的不同 代表性别的图片会显示不同的状态——使用ToogleButton可以实现这个效果;右边的图片采自某Q设置页面—用户可以在里面进行一系列应用设定——使用Switch可以实现这个效果。二、ToggleButton和Switch介绍状态开关按钮(ToggleButton)和开关(Switch)也是由Button派生出来...原创 2018-03-22 22:10:27 · 41163 阅读 · 0 评论 -
Java序列化与数据传输
1)什么是序列化①序列化:Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。堆内存中的java对象数据,通过某种方式把该对象存储到磁盘文件中,或者传递给其他网络节点(网络传输)。对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象状态的保存与重建。②反序列化:将序列化对象写原创 2021-03-06 17:39:22 · 2729 阅读 · 0 评论 -
实例:Android Studio3+版本 获取存有ANR信息的traces.txt文件,解决ANR问题
一.前期基础知识储备traces.txt系统自动生成的记录anr等异常的文件,只记录java代码产生的异常。如果是旧版本(Android Studio3以下的版本)的AS,可以直接通过DDMS的File Explorer直接导出来:之上的AS由于移除了DDMS,所以需要其他的方法获取该文件。二.上实例分析笔者在项目中出现了一个ANR,信息如下:06-01 14:55:29.473 973-1030/? E/ActivityManager: ANR in com.znv.linku原创 2020-06-24 16:33:46 · 1589 阅读 · 0 评论 -
新应用广告请求高版本手机出现java.net.UnknownServiceException: CLEARTEXT communication to *** not permit,无法获取广告
一,前期基础知识储备广告的配置文件如下:Android Development上可以找到:“ 为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输。”...原创 2020-04-17 11:27:55 · 421 阅读 · 0 评论 -
Bitmap精炼详解第(三)节:Bitmap的压缩
一,前期基础知识储备笔者之前有两篇文章:《Bitmap精炼详解第(一)节:Bitmap解析和加载》《Bitmap精炼详解第(二)节:Bitmap常见处理方式》解释了一些Bitmap的基础知识,有兴趣的读者可自行查看。1)如何计算Bitmap占用的内存如果图片要显示下Android设备上,ImageView最终是要加载Bitmap对象的,就要考虑单个Bitmap对象的内存占用了,如何计算...原创 2019-10-15 11:02:05 · 2889 阅读 · 1 评论 -
隐藏·透明-开发中实际使用到的状态栏、导航栏效果一网打尽
一、前期基础知识储备状态栏 StatusBar:顶部的一条显示时间、电量、通知等信息的 bar导航栏 NavigationBar:底部包含 back 键、home 键以及 recent 键的 bar实际开发中,关于两个bar的处理还是很常见的,每个应用可能采用的设置也不尽相同,这里博主就列出常用的关于两个bar的设置:1)状态栏隐藏不可见;2)状态栏可见设为透明,随不同界面...原创 2018-12-25 17:50:55 · 2647 阅读 · 0 评论 -
LinearLayout和RelativeLayout属性和性能详解
一、前期基础知识储备上,官方文档 由上面的官方文档,我们可以看出,两个布局方式的相同,都是继承自View.Group,是一种容器控件,LinearLayout的布局层次比较简单,方向和位置都比较容易控制,而相对布局RelativeLayout 对于其内子控件提供了更加丰富的布局层次和布局位置。二、两者在属性上的异同点共有属性:java代码中通过btn1关联次控件android:id="@+...原创 2018-03-28 17:20:25 · 8820 阅读 · 0 评论 -
Activity四种启动模式及onNewIntent()方法、taskAffinity属性分析
一、前期知识储备-Application,Task和Process的区别与联系①Application,翻译成中文时一般称为“应用”或“应用程序”,在android中,总体来说一个应用就是一组组件的集合。众所周知,android是在应用层组件化程度非常高的系统,android开发的第一课就是学习android的四大组件。当我们写完了多个组件,并且在manifest文件中注册了这些组件之后,把这些组...原创 2018-03-25 19:31:22 · 1894 阅读 · 1 评论 -
SharedPreference存储精炼详解
前期基础知识储备 之前做应用时碰到一个问题:在用户初次进入某个界面时,需要弹出一个提示,或者在EditText上显示一个hint;而用户之后进入就不再弹出提示了。思考之后就选择了SharedPreferences这个轻型的数据存储方式。存储一个布尔型值作为key,根据这个key作为判断是否是第一次进入此界面。protected void onCreate(@Nullable Bu...原创 2018-09-01 12:41:01 · 3503 阅读 · 2 评论 -
Android XML绘图精炼详解第(一)节:Shape解析和示例
一、前期基础知识储备Android XML绘图—XML在Android系统中可不仅仅是Java中的一个布局文件、配置列表。在Android开发者的手上,它甚至可以变成一幅画,一张图。Android开发者给XML提供了四个强大的技能来帮助实现这一功能:①Shape;②Bitmap;③Layer;④Secletor本篇开始第一讲——Shape的使用技巧。PS:Shape是Android...原创 2018-04-01 21:26:37 · 1053 阅读 · 0 评论 -
Handler类中发送消息-post()和postDelay()方法精炼详解
一、前期知识储备(1)上官方文档:参见Handler类中的描述首先,post和postDelay都是Handler的方法,用以在子线程中发送Runnable对象的方法;其次,Android中post()方法可以直接在非UI线程中更新UI,不同与Handelr的Send类方法,需要进行切换;最后,两个方法在实现UI线程事件的时间上有所区别,postDelayed()方法用...原创 2018-03-26 18:17:20 · 29155 阅读 · 0 评论 -
移动应用开发者看过来:优快云博客插入GIF动图的两种方法
一、前期基础知识储备(1)插入GIF动图的价值?以Android开发为例,所有的代码最终的界面呈现都是通过手机界面,而手机界面的展示分为两种:第一种是静态的展示,这种展示只要运用图片,比如截图软件就可以做到;第二种是动态的操作,比如动画、点击事件、以及其他的特效,这种类型的展示用截图展现的效果就会大打折扣,所以我们需求更好的解决方式——GIF动图。(2)如何插入GIF动图?由于An...原创 2018-04-01 09:48:32 · 1049 阅读 · 0 评论 -
Android标题栏Toolba和ActionBar对比精炼详解
一、前期基础知识储备上官方文档,A standard toolbar for use within application content.A Toolbar is a generalization of action bars for use within application layouts. While an action bar is traditionally part of an A...原创 2018-04-08 16:46:38 · 1473 阅读 · 1 评论 -
Android开发图标尺寸详解
一、开发中的实际情况(促进理解):Android开发中一个很重要的组成,就是开发者和UI设计师的配合,这关乎到APP界面部分——吸引用户的直接手段,那么在实际开发中,开发者和设计师是如何配合的呢?第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界面强相关的工作,以最常见的“back”按钮为例,UI设计师从无到有的具体实现步骤:①在coreldraw或者Sket...原创 2018-03-21 20:05:06 · 7643 阅读 · 0 评论 -
Activity 与 Window、PhoneWindow、DecorView 之间的关系详解
一、前期知识储备上图,通篇文章都是围绕这张图进行描述的,本篇文章尽量以简单的语言讲清Activity 与 Window、PhoneWindow、DecorView 之间的关系。Activity 的概念都比较熟悉,但是 Window、PhoneWindow、DecorView 这几个类并不常用,所以很多时候容易忽略了它们。其实在 Activity 的背后,它们都发挥着很重要的作用。 ...原创 2018-03-25 12:00:49 · 10281 阅读 · 1 评论 -
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 · 325 阅读 · 0 评论 -
this关键字和实体类的总结
在Android开发中,很多时候都会涉及到实体类的应用,实体类中简单说就由知识点“this关键字+getter/setter方法构成”。下面就来总结一下Android开发中实体类的两个知识点的应用:一、this关键字this是Java中的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。实例方法可以操作类的成员变量,当实例成员变量在实例方法中出现时,默认的格...原创 2018-03-20 20:05:34 · 1420 阅读 · 0 评论 -
图析:String,StringBuffer与StringBuilder的区别
一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可...原创 2018-03-24 15:03:07 · 76358 阅读 · 29 评论 -
draw9patch工具和9-patch图片精炼详解
一、前期基础知识储备(1)9-patch图片定义——Android SDK提供的解决应用开发过程中和UI相关的制作自适应背景图片的问题(就是一个使用9-patch制作的PNG图篇拉伸之后,失真幅度更小,非常适合开发使用)。实际工作中,会由UI设计师做好,然后开发者直接使用即可;若是开发者想自己平时开发练习使用,也可以学习如何制作9-patch图片。(2)Android studio默认安装...原创 2018-03-29 23:57:05 · 8606 阅读 · 1 评论 -
利用synchronized实现线程同步
一、前期基础知识储备(1)线程同步的定义:多线程之间的同步。(2)多线程同步原因:一个多线程的程序如果是通过Runnable接口实现的,则意味着类中的属性将被多个线程共享,由此引出资源的同步问题,即当多个线程要操作同一资源时,有可能出现错误。(3)实现多线程同步的方式——引入同步机制:在线程使用一个资源时为其加锁,这样其他的线程便不能访问那个资源了,直到解锁后才可以访问。——这样做的结果,所有线程...原创 2018-03-26 22:36:13 · 1606 阅读 · 0 评论 -
Android XML绘图精炼详解第(二)节:Selector状态选择器和简单示例
一、前期基础知识储备在前一节内容《Android XML绘图精炼详解第(一)课:Shape解析和示例》中,我们学习了Android XML绘图的第一种技能——Shape形状,这节讲解,我们来学习第二种技能——Selector 即状态选择器,Selector的作用在于帮助开发者实现静态绘图中的事件反馈,通过给不同的事件设置不同的图像,从而在程序中根据用户输入,返回不同的结果。参见官方文档:...原创 2018-04-01 23:08:32 · 468 阅读 · 0 评论 -
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 · 47405 阅读 · 1 评论