Android学习之路
文章平均质量分 73
AcceptedQWQ
一直在前进
展开
-
RecycleView item显示与xml中显示不一样解决方案
理想效果:实际效果:item布局:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools...原创 2019-08-13 11:29:28 · 363 阅读 · 1 评论 -
Android中Serializable和Parcelable序列化对象详解
学习内容:1.序列化的目的2.Android中序列化的两种方式3.Parcelable与Serializable的性能比较4.Android中如何使用Parcelable进行序列化操作5.Parcelable的工作原理6.相关实例 1.序列化的目的 (1).永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2).通过序列化操作将对象数据在网络...转载 2018-09-18 17:48:50 · 328 阅读 · 0 评论 -
Android Butterknife使用方法总结
原文链接:http://blog.csdn.net/donkor_/article/details/77879630前言:ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnif...转载 2018-08-07 15:45:09 · 332 阅读 · 0 评论 -
ConstraintLayout 完全解析 快来优化你的布局吧
本文已在我的公众号hongyangAndroid原创首发。 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/78011599 本文出自张鸿洋的博客本文已在我的公众号hongyangAndroid原创首发,文章合集。一、概述ConstraintLayout出现有一段时间了,不过一直没有特别去关注,也多多少少看了一些...转载 2018-07-17 10:35:48 · 377 阅读 · 0 评论 -
Android将Gif图片设置为背景------android-gif-drawable开源框架的使用
有了android-gif-drawable这个开源框架,在项目中使用gif动态图片不再是问题。 android-gif-drawable的 开源地址是:https://github.com/koral–/android-gif-drawable。其主要作用就是可以展示gif格式的图片及动画,还可以对动画进行监听操作。开源库中封闭了GifImageView,GifImageButton,GifTe...原创 2018-05-28 16:07:24 · 7768 阅读 · 0 评论 -
Android Animation动画详细介绍
1.Animation 动画类型Android的animation由四种类型组成:XML中alph渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果 JavaCode中AlphaAnimation渐变透明度动画效果ScaleAnimation渐变尺寸伸缩动画效果TranslateAnimation画面转换位置移动动画效...转载 2018-05-27 17:10:35 · 319 阅读 · 0 评论 -
Android布局优化 include与merge标签使用详解
Android include与merge标签使用详解 1. 简介 include和merge标签的作用是实现布局文件的重用。就是说,为了高效复用及整合布局,使布局轻便化,我们可以使用include和merge标签将一个布局嵌入到另一个布局中,或者说将多个布局中的相同元素抽取出来,独立管理,再复用到各个布局中,便于统一的调整。 比如,一个应用中的多个页面都要用到统一样式的标题栏或底部导航栏,这时就...转载 2018-05-27 17:09:12 · 716 阅读 · 0 评论 -
Android Socket使用
Android APP使用HTTP访问WEB服务,在接收数据时发生错误,提示java.net.SocketException: Permission denied1之前一直无法连接原因为:没加<uses-permission android:name="android.permission.INTERNET" />先来张效果图:使用Socket扫描端口的几个步骤:1,先开启一个异步线程...原创 2018-05-26 11:19:35 · 1164 阅读 · 0 评论 -
SharedPreference.Editor的apply和commit方法异同
在android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的commit方法, 今天无意了看到了系统用了apply,看了方法的介绍, 原来这个方法也是可以提交数据的.apply方法在官方SDK说明如下:Commit your preferences changes back from this Editor to the SharedPrefer...转载 2018-04-28 16:42:37 · 154 阅读 · 0 评论 -
Android Gson使用详解
Json 是一种文本形式的数据交换格式,比 xml 更为轻量。Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 FastJson 两种,这里要介绍的是 GsonGson 的 GitHub 主页点击这里:Gson一、Gson的基本用法1.1、Gson对象在进行序列化与反序列操作前,需要先实例化一个 com .google.gson.Gson 对象,获取 Gso...转载 2018-04-28 15:32:31 · 615 阅读 · 0 评论 -
Android储存方式SharedPreferences
SharedPreferences sharedPreferences = getSharedPreferences("peopel", Context.MODE_PRIVATE);Editor editor = sharedPreferences.edit();//获取编辑器editor.putString("name", "张三");editor.putInt("age", 4);ed...原创 2018-04-28 15:30:20 · 175 阅读 · 0 评论 -
Android 解决 adapter.notifyDataSetChanged() 不起作用
转载请注明出处:http://blog.csdn.net/like_program/article/details/52517119使用 Listview 的时候,给 adapter 的数据源 List 添加了新的数据,然后调用 adapter.notifyDataSetChanged(),发现 listview 并没有显示出新增的数据,但是遍历输出 List 中的元素,发现新增数据已经被...转载 2018-05-17 17:34:18 · 17078 阅读 · 2 评论 -
Android去除标题栏的三种方法
在android中去掉标题栏有三种方法,它们也有各自的特点。1.在代码里实现[java] view plain copythis.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 记住:这句代码要写在setContentView()前面。2.在清单文件(manifest.xml)里面实现[java] view plain copy<...转载 2018-05-10 18:32:04 · 1364 阅读 · 0 评论 -
Android自定义的View加入xml文件闪退解决方案
1、自定义view需要注意构造函数,所有的xml布局,初始化时构造函数使用的都是 (Context context, AttributeSet attrs) {两个参数的。如果没有该构造函数会报错。2、如果有自定义属性,则需要在当前xml中引入工程包名,否则自定义属性会报错这个问题报错的愿意是第一个,构造函数使用错误。增加构造函数就能解决问题。使用下面这个构造函数即可: public Gam...原创 2018-05-10 18:19:48 · 3194 阅读 · 0 评论 -
Android中图片的三级缓存
为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响 特别是,当我们想要重复浏览一些图片时,如果每一次浏览都需要通过网络获取,流量的浪费可想而知 所以提出三级缓存策略,通过...转载 2018-09-14 15:30:41 · 138 阅读 · 0 评论 -
Android:图解四种启动模式 及 实际应用场景解说
在一个项目中会包括着多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构。举个栗子,若我们多次启动同一个Activity。系统会创建多个实例依次放入任务栈中。当按back键返回时,每按一次,一个Activity出栈,直到栈空为止。当栈中无不论什么Activity。系统就会回收此任务栈。上面这个样例中的Activity并没有设置启动模式,你会发...转载 2018-09-14 15:41:49 · 700 阅读 · 3 评论 -
App安全之网络传输安全
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全。所以当我们谈论App安全问题的时候一般来说在以下三类范畴当中。App代码安全,包括代码混淆,加密或者app加壳。 App数据存储安全,主要指在磁盘做数据持久化的时候所做的加密。 App网络传输安全,指对数据从客户端传输到Server中间...转载 2019-08-01 16:40:03 · 632 阅读 · 0 评论 -
Binder机制最简单易懂的讲解
一、引言Android系统已经有其他的IPC方式,管道,Socket等,为什么还要使用Binder呢?1.1 性能方面Binder数据拷贝只需要一次,管道,消息队列,Socket都需要两次共享内存实现方式较复杂1.2 安全方面传统通信方面对身份并没有做出严格的验证,比如Socket通过IP通信很容易伪造Binder支持双方身份的验证,安全性高二、Binder概述...原创 2019-08-05 15:06:57 · 510 阅读 · 0 评论 -
史上最详细的HashMap红黑树解析
HashMap红黑树解析 红黑树介绍 TreeNode结构 树化的过程 红黑树的左旋和右旋 TreeNode的左旋和右旋 红黑树的插入 TreeNode的插入 红黑树的删除 TreeNode的删除节点 本篇主要从以下几个方面介绍: 讲解红黑树的部分算是理论部分,讲解TreeNode的部分则是代码实践部分,配合服用效果更加。 保守估计,仔细食用本篇...转载 2019-08-01 11:10:12 · 1121 阅读 · 0 评论 -
Android runOnUiThread()源码详解以及实现
在Android开发的过程中,主线程主要来完成UI绘制和响应用户的操作,默认情况下,我们大部分的代码都是在主线程中执行的,因此我们时刻要考虑主线程的情况。我们都知道要开启一个子线程来完成一个耗时操作,以避免阻塞主线程影响用户体验,甚至ANR。但是子线程执行完要更新UI的时候,我们又必须回到主线程来更新,实现这一功能常用的方法是执行Activity的runOnUiThread()方法:r...转载 2019-08-01 10:25:22 · 1275 阅读 · 0 评论 -
Handler内存泄漏详解(包含Java内部类详解)
内部类详解传送门:https://blog.csdn.net/hacker_zhidian/article/details/82193100handler是我们在更新UI时经常使用到的类,但是不注意的话,很容易就导致内存泄露,最后导致OOM,故现在探究下handler导致内存泄露的原因及有哪些常用的解决办法。先看下面一段代码:可以看到这段代码编辑器为我们标出了黄色,并且提示如下:...转载 2019-08-01 10:15:36 · 233 阅读 · 0 评论 -
从concurrentHashMap看CAS的基础原理
原文地址:https://blog.csdn.net/weixin_42636552/article/details/82383272本篇的思路是先阐明无锁执行者CAS的核心算法原理然后分析Java执行CAS的实践者Unsafe类,该类中的方法都是native修饰的,因此我们会以说明方法作用为主介绍Unsafe类,最后再介绍并发包中的Atomic系统使用CAS原理实现的并发类。无锁的概念...转载 2019-07-26 16:15:46 · 569 阅读 · 0 评论 -
Android Notification 通知的使用以及自定义通知
如何发送一个通知?Android 8版本之前:第一步:获取NotificationManagermNotificationManager = (NotificationManager)activity.getSystemService(NOTIFICATION_SERVICE);第二步:构建一个Notification的builder用于构建NotificationNoti...原创 2019-07-17 16:52:32 · 772 阅读 · 0 评论 -
Android 8.1版本广播发送问题
今天在写通知栏自定义RemoteView事件时,用了广播处理点击事件,发送一个广播,接收时收不到,出现了这个log我的写法:使用的隐式方式发送广播。查资料后发现,Android O版本对后台进程做了限制广播的发送,对隐式广播也做了限制;优先使用动态注册Receiver的方式,能动态注册绝不使用Manifest注册IntentFilter intentFilter = ne...原创 2019-07-19 10:24:42 · 1272 阅读 · 0 评论 -
ViewStub标签懒加载
什么是ViewStub?ViewStub其实本质上也是一个View,其继承关系如图所示:为什么ViewStub可以提高加载性能?ViewStub使用的是惰性加载的方式,即使将其放置于布局文件中,如果没有进行加载那就为空,不像其它控件一样只要布局文件中声明就会存在。那ViewStub适用于场景呢?通常用于网络请求页面失败的显示。一般情况下若要实现一个网络请求失败的页面,我们是不是...转载 2019-07-16 15:44:40 · 214 阅读 · 0 评论 -
最通俗易懂的Android热修复技术原理详解
本文框架什么是热修复? 热修复框架分类 技术原理及特点 Tinker框架解析 各框架对比图 总结 通过阅读本文,你会对热修复技术有更深的认知,本文会列出各类框架的优缺点以及技术原理,文章末尾简单描述一下Tinker的框架结构。一、什么是热修复?正常开发流程热修复开发流程热修复优势修复什么?二、热修复框架分类现状:百花齐放百家争鸣...转载 2019-07-11 16:48:12 · 221 阅读 · 0 评论 -
Android 常用 adb 命令总结
原始链接:https://www.cnblogs.com/bravesnail/articles/5850335.htmlAndroid 常用 adb 命令总结针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。Android Debug Brid...转载 2019-05-24 15:50:32 · 248 阅读 · 0 评论 -
构建模式(Builder模式)
了解了单例模式,接下来介绍另一个常见的模式——Builder模式。那么什么是Builder模式呢。你通过搜索,会发现大部分网上的定义都是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示但是看完这个定义,并没有什么卵用,你依然不知道什么是Builder设计模式。在此个人的态度是学习设计模式这种东西,不要过度在意其定义,定义往往是比较抽象的,学习它最好的例子就是...转载 2019-01-03 15:36:16 · 781 阅读 · 0 评论 -
单例模式
单例模式首先了解一些单例模式的概念。确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这样做有以下几个优点对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中。 保持程序运行的时候该中始终只有一个实例存在内存中其实单例有很多种实现方式,但是个人比较倾向于其中1种。代码如下public class Singleton { pr...转载 2018-12-02 17:56:46 · 214 阅读 · 0 评论 -
Android MVC模式实现俄罗斯方块
Android实现的俄罗斯方块,游戏采用MVC设计模式进行设计,顺便在游戏中加入了一点创意。该游戏主要是我拿来练MVC模式用的。QWQ(由于找素材等,花了十天时间写完)项目如下所示:未重构之前:链接:https://pan.baidu.com/s/1dIOeM6 密码:xko9以下是重构内容,使用了几个设计模式,单例模式,抽象工厂模式,状态模式,将之前的...原创 2018-02-16 15:06:48 · 462 阅读 · 0 评论 -
Android线性布局之layout_gravity和gravity区别
android:layout_gravity:表示子元素位于父元素的位置android:gravity:表示控件内部的元素位于该控件的位置(按钮内文字等)原创 2018-01-30 16:34:42 · 551 阅读 · 0 评论 -
Android常用颜色值
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F&l转载 2018-02-09 22:50:42 · 520 阅读 · 0 评论 -
Android Intent实现页面跳转和传值
*Intent称为意图,是Android各大组件连接的桥梁1.Activity页面跳转同一个包内Intent intent = new Intent();intent.setClass(MainActivity.this, SecondActivity.class); MainActivity.this.startActivity(intent);不同包内转载 2017-10-16 20:09:43 · 1070 阅读 · 0 评论 -
Android系列控件之ToggleButton
ToggleButton(开关按钮)是Android系统中比较简单的一个组件,是一个具有选中和未选择状态双状态的按钮,并且需要为不同的状态设置不同的显示文本。 ToggleButton常用的XML属性属性名称描述android:disabledAlpha设置按钮在禁用时透明度。 android:tex转载 2017-10-15 19:16:05 · 336 阅读 · 0 评论 -
Android控件系列之CheckBox
学习目的:1、掌握在Android中如何建立CheckBox2、掌握CheckBox的常用属性3、掌握CheckBox选中状态变换的事件(监听器)CheckBox简介:CheckBox和Button一样,也是一种古老的控件,它的优点在于,不用用户去填写具体的信息,只需轻轻点击,缺点在于只有“是”和“否”两种情况,但我们往往利用它的这个特性,来获取用户的一些信原创 2017-10-15 19:10:28 · 329 阅读 · 0 评论 -
Android控件系列之RadioButton&RadioGroup
学习目的:1、掌握在Android中如何建立RadioGroup和RadioButton2、掌握RadioGroup的常用属性3、理解RadioButton和CheckBox的区别4、掌握RadioGroup选中状态变换的事件(监听器)RadioButton和CheckBox的区别:1、单个RadioButton在选中后,通过点击无法变为未选中转载 2017-10-15 19:05:43 · 270 阅读 · 0 评论 -
Android String subString用法
substring(index):截取该位置(包括该位置)后所有字母substring(beginIndex,endIndex):起始位置和结束位置总字母参数:beginIndex - 开始处的索引(包括)。endIndex - 结束处的索引(不包括)。示例:"abcdefg".substring(2) returns "cdefg""a转载 2017-10-13 20:45:26 · 887 阅读 · 0 评论 -
Android onClick 按钮单击事件 四种常用写法
Android onClick 按钮单击事件 四种常用写法这里使用四种onClick单击事件,来实现电话拔号器的DEMO。XML文件[html] view plain copyEditText android:layout_width="match_parent" a转载 2017-10-13 20:41:24 · 474 阅读 · 0 评论 -
JAVA Android 字符串是否相等使用equals方法
1 总体来说java中字符串的比较是==比较引用,equals 比较值的做法。(equals 对于其他引用类型比较的是地址,这是因为object的equals方法比较的是引用),但是不同的声明方法字符串的比较结果也是不同的。 例如: String str1=new String("a"); String str2=new String("a"); s转载 2017-10-13 20:39:27 · 2183 阅读 · 0 评论 -
Android WebView用法
前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图京东首页那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用用法。目录文章目录1. 简介WebView是一个基于webkit引擎、展现web页面的控件。Android的Webv转载 2017-10-22 10:58:01 · 752 阅读 · 0 评论