自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android组件化入门:一步步搭建组件化架构

1、前言最近因为业务需求变更,有考虑采用组件化架构进行开发,这方面我之前没有接触过。关于组件化的文章很多,各方大神更是提出了各种的组件化方案,我也看了很多相关文章。但是学习新东西看的再多,不如动手做一次,先不考虑复杂的东西,先动手做个简单的Demo更有助于理解组件化的思想。组件化相关理论知识这里就不多讲了,想要了解的可以自己去搜或者去看Android组件化方案这篇文章。废话不多说,直接动手开码。...

2019-04-30 14:05:10 1734

原创 Android进阶知识:事件分发与滑动冲突

1、前言Android学习一段时间,需求做多了必然会遇到滑动冲突问题,比如在一个ScrollView中要嵌套一个地图View,这时候触摸移动地图或者放大缩小地图就会变得不太准确甚至没有反应,这就是遇到了滑动冲突,ScrollView中上下滑动与地图的触摸手势发生冲突。想要解决滑动冲突就不得不提到Android的事件分发机制,只有吃透了事件分发,才能对滑动冲突的解决得心应手。2、事件分发机制相关...

2019-04-24 09:11:30 412

原创 Android进阶知识:Handler相关

1、前言Handler在Android中的地位不必说了,学习安卓开发必然跳不过Handler,讲解Handler的文章也是非常的多,这里我对我所了解的Handler这种Android中多线程间的通信方式的相关知识做一个总结。2、Handler使用Handler作为线程间通信的方式,最常使用的地方就是子线程更新UI。因为Android的UI控件不是线程安全的,如果在多线程下并发访问可能会导致U...

2019-04-15 17:49:08 269

原创 Android进阶知识:ThreadLocal

1、ThreadLocal是什么?ThreadLocal是一个线程内部数据存储类,通过他可以在指定的线程中存储数据。存储后,只能在指定的线程中获取到存储的数据,对其他线程来说无法获取到数据。2、ThreadLocal的使用场景日常使用场景不多,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑使用ThreadLocal。Android源码的Lopper、Activit...

2019-04-15 17:46:30 181

原创 虚拟机对象的访问定位和内存布局

Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中之规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位访问队中的对象的具体位置,所以对象的访问方式也是由虚拟机实现而定的。目前主流方式是使用句柄和直接指针两种。通过句柄访问的话,Java堆中将会划分出一块内存作为句柄池,reference中存储的就是对象的句柄...

2019-01-14 15:45:38 423

原创 AnimatorSet.setStartDelay在Android4.4上运行问题

先上代码:ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(textView1, "translationY", 0, 200, 0);ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(textView2, "translationY", 0, 200, 0);obje...

2019-01-11 16:16:33 2825

原创 自定义蜘蛛网状图

运行效果:绘制分为三步:1、绘制蜘蛛网格线2、绘制格中线3、绘制数据获取中心点想x,y坐标和半径:@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) { radius = Math.min(w, h) / 2 * 0.9f; centerX = w / 2; cent...

2019-01-10 15:13:14 4509

原创 虚拟机对象的创建

1、对象的创建流程图:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有先执行相应的类加载过程。接下来虚拟机为新生对象分配内存。对象所需内存大小在类加载完成后就可以确定,为对象分配的任务等同于把一块确定大小的内存从Java堆中划分出来。分配方式: Java堆中内存是绝对规整的-&g...

2019-01-04 09:27:29 449

原创 ANR的产生及日志分析

ANR产生原因:1、View的按键事件或者触摸事件在特定的时间(5秒)内无法得到响应。2、BroadcastReceiver的onReceive()方法运行在主线程中,在特定的时间(10秒)内无法完成处理。3、Service的各个生命周期函数在特定的时间(20秒)内无法完成处理。定位和分析:首先查看Logcat日志信息可知一些信息:07-22 21:39:17.019 819-851/...

2019-01-03 16:00:59 1943

原创 Java运行时数据区域

运行时数据区域。1、程序计数器是一块较小的内存空间。可看做当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。线程私有。执行Java方法计数器记录的是正在执行的虚拟机字节码指令的地址,执行Native方法,计数器值为空。此内存区域是唯...

2019-01-03 15:45:54 161

原创 okHttp源码阅读

使用方法okhttp基本使用方法:// 1、创建OkHttpClient对象OkHttpClient okHttpClient = new OkHttpClient();//2、创建Request对象Request request = new Request.Builder().url(url).build();//3、通过okHttpClient的newCall方法获得一个C...

2018-08-19 23:28:10 2135

原创 Volley源码阅读

从Volley的使用步骤来看源码,首先是new一个RequestQueue,来看Volley.java的newRequestQueue方法: 方法重载最终会调用执行这个方法:在这个方法里首先初始化cacheDir,然后根据API版本是否大于9初始化一个HurlStack对象或是一个HttpClientStack对象。紧接着初始化一个BasicNetwork对象和一个Reque...

2018-07-29 23:34:12 206

原创 AsyncTask源码阅读

AsyncTask使用Android中的耗时操作需要放到子线程异步处理,除了使用Thread,Android提供了一个封装好的组件AsyncTask。使用方法代码如下:public class AsyncTaskActivity extends AppCompatActivity {private TextView mProgress;private ImageView ...

2018-07-16 10:38:27 1237

原创 贝塞尔曲线绘制波浪

效果图: 关于贝塞尔曲线的介绍可以参照文章https://www.cnblogs.com/wjtaigwh/p/6647114.html了解完贝塞尔曲线就来完成波浪自定义View大体思路就是先绘制一条超出屏幕长的二阶贝塞尔曲线,然后再动画循环平移曲线。package com.xingyun.waveapplication;import android.animatio...

2018-05-27 21:36:28 3103

原创 Android Paint Xfermode实现镂空相机扫描界面

先上效果图:demo比较简单,背景颜色是黄色,然后在上面覆盖上自定义View。实际需求是在相机的View上盖上一层遮罩,遮罩中心镂空一个透明显示的圆形部分。这个需求一般的布局比较难以实现,如果要ui给一张素材图片又存在不同分辨率手机对图片的拉伸问题,中间的圆会变形,适配不好。所以想要用一个自定义View来实现,这样不仅不存在适配问题而且也比较简单。首先,简单粗暴直接上代码:package com....

2018-05-27 21:17:34 1816

原创 Cannot merge new index 66195 into a non-jumbo instruction!问题解决

问题现象: 问题原因: Android系统中,一个Dex文件中存储方法id用的是short类型数据,所以导致你的dex中方法不能超过65536 解决方法:Google 官方给出的解决方案是使用 Multidex 。 解决步骤: 1、修改 build.gradle 文件 defaultConfig { ... multiDexEnabled true//

2018-04-08 15:29:32 211

原创 Android Notification 通知

这是Android 通知相关的内容的总结 android中通知用到的地方很多,经常有的例如推送消息,下载时的提示等。Android 3.0 (API level 11)之前:使用new Notification()方式创建通知:NotificationManager mNotifyManager = (NotificationManager) getSystemService...

2018-04-01 16:41:50 750 1

原创 仿微信图片选择器

1、概述 图片选择器也是在APP开发中常见的一个功能,检索手机本地的所有图片以GridView的形式显示在界面上,看起来一个简单的功能,但是要想要尽量避免内存溢出,还想要UI操作尽可能的流畅图片加载尽可能的快速,也不是简单的一个setImageBitmap就可以的。 2、运行效果效果图:测试手机里存储了近万张漫画图片,每个文件夹也有上千张图片,可以看到加载速度和运行流畅程度还是可以的。

2017-06-19 23:48:14 502 2

原创 Java中的信号量Semaphore

1、信号量概念 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore V

2017-06-07 23:53:16 592

原创 使用CrashHandler获取crash信息

1、背景和问题在项目开发时,程序crash是再常见不过的情况。crash发生时系统会杀掉正在执行的程序,显示为闪退或者是提示用户程序已经停止运行。而且,用户使用过程中发生的crash,我们开发者 是无法得知原因的,无法知道crash的原因,也就无法解决这个问题。2、解决方法在Android中提供了处理之类的方法,在Thread类中的一个方法setDefaultUncaughtExceptionHan

2017-02-08 22:46:19 1518

转载 Android Volley框架的几种post提交请求方式

From:  http://www.open-open.com/lib/view/open1407727047207.html先简单描述一下Google的Android开发团队在2013年推出的一个网络通信框架Volley.它的设计目标是进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如下载文件等,Volley的表现就不尽如人意。在app开发中,我们最常见的就是从

2016-07-25 21:45:29 548

原创 第二章 物理层(笔记)

1、物理层的基本概念物理层解决如何在连接各种计算机的传输媒体上传输数据比特流而不是指具体的传输媒体。 物理层的主要任务描述为:确定与传输媒体的接口的一些特性,即:2、数据通讯的基础知识相关术语: 对基带信号几种调制的方法: 3、物理层下面的传输媒体: 4、信道复用技术 频分复用技术 时分复用技术 波分复用技术 码分复用技术5、数字传输技术E1T

2016-07-25 13:40:38 313

原创 第一章 计算机网络概述(笔记)

1、计算机网络在信息时代的作用三网: 电信网络(电话) 有线电视网 计算机网络: 因特网 其他网络(军网、政府专用网)2、计算机网络的重要功能连通性:彼此连通,交换信息共享:信息共享,软硬件共享3、因特网概述网络:许多计算机连在一起互联网:许多网络连在一起因特网:全球最大的互联网(Internet) 使用的TCP/IP协议因

2016-07-22 10:04:11 417

原创 自定义View——简单的圆点进度条

说是进度条,更像是刻度条,先看效果。   再下来是代码:import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.vie

2016-07-06 11:52:26 1563 2

原创 ScrollView嵌套ListView冲突高度显示不全问题

实习中遇到了ScrollView里放置一个ListView的情况,照常书写代码测试的时候出现这种情况:   就是只显示一个item的高度。上网搜索了之后才知道是ScrollView嵌套ListView会无法正确计算高度,导致只显示一个item的高度。   网上解决的思路也有很多,一种是不要在ScrollView里放置ListView,换成其他的布局方式比如ScrollView+LinearL

2016-06-24 13:26:25 6074

转载 Android学习笔记之AndroidManifest.xml文件解析

原文地址:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,

2016-06-14 12:29:13 750

转载 Java中的IO流系统详解

摘要:   Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。   Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputSt

2016-06-03 11:22:10 399

原创 Log日志工具类

import android.util.Log;/** * Created by SY on 2016/6/2. */public class LogUtils { public static boolean isDebug = true; private static final String TAG = "SY"; public static void i(String

2016-06-02 14:51:24 290

原创 ListView局部更新

好几天没有写博了,前几天一直在忙毕业答辩,之后还回家了一趟,一直没有写。   今天实习时候,使用listview的adapter.notifyDataSetChanged(),方法刷新数据时候发现会发生界面闪烁的问题。后来知道了可以在adapter写一个updateView方法来实现一个item的局部更新,不像notifyDataSetChanged方法把全部数据刷新一遍。调用的时候只要调用ada

2016-06-01 18:12:55 719

转载 安卓重要的生命周期图和流程图

原文地址:http://blog.csdn.net/RoseChan/article/details/514865131、Activity生命周期2、Fragment生命周期3、Service生命周期4、View的绘制流程图5、Looper-Message-Handler流程图6、M

2016-05-24 10:04:25 2469

转载 你需要知道的Android拍照适配方案

原文地址:http://www.jianshu.com/p/f269bcda335f前言近段时间,家里陪自己度过大学四年的电脑坏了,挑选好的新电脑配件终于在本周全部到货,自己动手完成组装。从AMD到i7的CPU,6G内存到14G内存,打开 Android Studio 的速度终于杠杆地上去了,感动到泪流满面啊!!!!!!!扯了这么多,回归一下正题,还是来说说本篇文章要写什么吧!

2016-05-23 16:50:53 498

原创 AndroidStudio插件GsonFormat

1、下载安装GsonFormat插件 在Android Studio 的setting里点击plugins,选择browse repositories…如下图 搜索GsonFormat,点击安装 重启Android Studio 2、使用GsonFormat 点击code里的Generate… 选择GsonFormat 将json复制进去,点击ok即可

2016-05-19 17:06:06 433

原创 自定义圆形头像CircleImageView

圆形头像很常用功能,于是想自己写个自定义的圆形的view。搜索了一下,android中可以通过BitmapShader实现这个效果。  BitmapShader是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置、  这里我们只关注BitmapShader,构造方法:  bitmapShader = new BitmapShader(bitmap, Ti

2016-05-16 15:24:51 547

原创 ViewPager+Fragment实现页卡切换

现在很多的APP都是这种ui设计模式,在实际开发中经常使用,所以以前我也写过类似的,但基本都是拿来主义,现在正好又遇到了,也不是很复杂,所以就试着自己写一个。   首先是Activity的布局代码:   <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/ap

2016-05-13 18:12:23 3347

原创 自定义动画Animation

创建自定义动画非常简单,只要实现他的applyTransformation的逻辑就可以了,不过通常情况下还要覆盖父类的initialize方法来实现一些初始化工作。 模拟电视机关闭效果动画import android.graphics.Camera;import android.graphics.Matrix;import android.view.animation.AccelerateIn

2016-05-12 15:32:32 481

转载 各种Android Dialog创建及其监听事件实现

本文转载自:http://blog.csdn.net/andie_guo/article/details/14145135   在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。关于Android Dialog的使用方法,已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例),但是只是给出了创建各种类型对

2016-05-11 16:12:51 800

原创 调用相机拍照或者从图库里选择图片裁剪后设置到界面

拍照或者从相册中挑选图片设置头像是很常见的功能。同样是网上搜索了资料,知道了可以调用系统的功能实现,然后就试着开始写了。先是布局文件,就是一个ImageView和一个TextView。<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr

2016-05-11 15:44:22 2826

原创 自定义dialog

实习中遇到的需要自定义没有title的dialog,这里图片是我自己乱搞的,大概查了一下百度就开始写了。先是dialog的布局。 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width

2016-05-10 14:10:59 791

原创 Android 文件读写工具类

自己写的工具类,写的不好,慢慢修改。package com.sy.utils;import android.content.Context;import android.os.Environment;import android.os.StatFs;import android.util.Log;import java.io.BufferedInputStream;import java.i

2016-05-09 14:11:35 1562

转载 Android 系统Action大全

常用Action说明:String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。 “android.intent.action.ADD_SHORTCUT” String ALL_APPS_ACTION 动作:列举所有可用的应用。 输入:无。 “android.intent.action.ALL_APPS” String ALTERNATIVE_CATEGORY

2016-05-05 17:42:24 420

Volley源码

volley是在2013年的Google大会上发布的一款Android平台网络通信库,源代码

2018-07-29

空空如也

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

TA关注的人

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