学习记录
文章平均质量分 63
一个写代码的胖子
这个作者很懒,什么都没留下…
展开
-
ImageView里setImageResource出现OOM问题
ImageView加载图片时,有时会出现OOM问题imageView.setImageResource(imageId);public static Bitmap readBitMap(Context context, int resId) {BitmapFactory.Options opt = new BitmapFactory.Options();opt.inPr转载 2016-03-25 18:10:26 · 3253 阅读 · 0 评论 -
使用Gson进行JSON处理
JSON解析:使用Gson进行解析:下载google-gson-2.2.2-release.zip包。包含两种主要操作:一种是将对象或者不同的内容转化为JSON格式,一种是将JSON格式的内容还原到相应的对象属性或者其他属性。1、首先使用:Gson gson = new Gson(); 创建gson对象2、要把数据转化为JSON格式时,可以在新建一个JavaB转载 2016-02-18 19:53:30 · 614 阅读 · 0 评论 -
Volley学习记录(四)
网络请求的取消httpclient:DefaultHttpClient httpClient = new DefaultHttpClient();ClientConnectionManager connectionManager = httpClient.getConnectionManager();// 拿到连接管理器connectionManager.shutdown();httpurlc原创 2016-02-13 15:01:39 · 332 阅读 · 0 评论 -
Android图片的三级缓存和AsyncTask的使用的研究学习
三级缓存1、优先从内存中加载图片, 速度最快, 不浪费流量2、其次从本地(sdcard)加载图片, 速度快, 不浪费流量3、最后从网络下载图片, 速度慢, 浪费流量原创 2016-02-15 17:25:30 · 552 阅读 · 0 评论 -
Volley学习记录(一)
VolleyVolley是google出的,google 在2013 i/o大会上提出来的.google公司为什么会去搞一个volley框架?* 1. 用户开启一个activity,然后加载网络,这个时候.如果用户点击了finish按钮.activity被销毁了-->网络请求和activity的生命周期是应该联动起来的.* 2. listview加载图片的情况比较多.如果用户快速的去滑动listv原创 2016-02-11 16:12:13 · 311 阅读 · 0 评论 -
android学习记录3(数据存储的方式:sqlite、sp、存文件。listview简单使用)
数据存储的方式存文件 一般的数据 sharedperference 设置信息,配置信息,密码 数据库 相同的结构的数据,大量存储,增删改查。 Sqlite 开源的,嵌入式的数据库,轻量级。数据库的创建文件的创建 //引用,如果文件不存在是不会被创建 File file = new File(“haha.txt”); //输原创 2016-01-31 14:46:13 · 1113 阅读 · 0 评论 -
android学习记录1(ADT,SDK,ADB,点击事件等基础使用)
ANDROIDDE 的体系结构Dalvik VM 和 JVM 的比较 ADTAndroid develop tools,安卓开发工具(eclipse的插件) 最新版本23.xxx 不好用。默认强制使用一些新的控件。SDKstandard develop kits 标准开发工具包SDK的目录结构add-ons 附加组件,放在一个额外的工具。google api,提供google地图的jar包原创 2016-01-30 15:31:51 · 2152 阅读 · 0 评论 -
Java获取随机数的3种方法
方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1))例:(int)(1+Math.random()*(10-1+1))从1到10的int型随数方法2获得随机数for (int i=0;i{System.out.println((int)(1+Math.random()*10));}(int)(1+Math.random()*10)转载 2015-06-14 10:13:08 · 8408 阅读 · 0 评论 -
Android的Menu
1、Android的Menu简介Android系统的Menu主要有三种:OptionsMenu、ContextMenu、SubMenu自定义Menu可参考:http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html 2、OptionsMenu用法2.1、创建Menu 按下Menu键时,屏幕底部就会弹出menu选项转载 2015-06-15 21:39:02 · 414 阅读 · 0 评论 -
接口回调
不同模块之间传值需要用接口回调步骤:1.创建接口和接口方法 public interface OnToolBarClickListener{ void onToolBarClick(int position); }2.定义接口变量 OnToolBarClickListener mOnToolBarClickListener;3原创 2016-02-19 17:21:13 · 288 阅读 · 0 评论 -
前台运行服务startForeground
前台服务是哪些被认为用户知道的并且在内存低的时候不允许系统杀死的服务。前台服务必须给状态栏提供一个通知,他被放到了“正在进行中(Ongoing)”标题之下,这就意味着直到这个服务被终止或从前台删除通知才能被解除。例如,一个播放音乐的音乐播放器服务应该被设置在前台运行,因为用户明确的知道它们的操作。状态栏中的通知可能指明了当前的歌曲,并且用户启动一个跟这个音乐播放器交互的Activity。转载 2016-03-16 13:44:49 · 10517 阅读 · 0 评论 -
自己写的一个带indicator的viewpager
实习一周了,在公司项目中看到用到带indicator的viewpager,用的是textview和viewpager,在每个text添加一个2dp的textview作为指示器,选中哪个textview就把他下面的知识器的textview设置为可见,其他的隐藏。以前我用过第三方开源的ViewPagerIndicator。我感觉那个指示器应该要做个移动的动画吧,不然视觉效果会不太好,于是周末回来就自己原创 2016-03-19 20:24:19 · 301 阅读 · 0 评论 -
阅读Android源码的一些姿势
http://zhuanlan.zhihu.com/kaede/20564614?hmsr=toutiao.io&%3Butm_medium=toutiao.io&%3Butm_source=toutiao.io转载 2016-03-25 11:10:08 · 373 阅读 · 0 评论 -
Android系列--DOM、SAX、Pull解析XML
http://www.cnblogs.com/xiaoluo501395377/p/3444744.html转载 2016-03-25 10:46:16 · 224 阅读 · 0 评论 -
一半在外的按钮布局效果实现
刚开始实习的日常果然就是画画界面布局啊~哈哈,不过就算是写布局文件也没有想象的那么简单。首先学到的就是大量使用LinearLayout+weight,基本全是权重,这样在屏幕适配的时候才好适配,虽然以前学习的时候也知道要多用权重方便适配,但是自己写的时候也不太注意,现在看来基本每个界面能用权重的全是用权重,这个是学习到了。然后遇到了一个这样的布局。如下如图:上面是一个地图的MapVie原创 2016-03-24 17:06:14 · 1350 阅读 · 0 评论 -
多字文本android:ellipsize属性不正常工作的解决办法
当TextView中的文本内容长度超过了TextView的宽度,如果是单行,超出部分将被截断,此时我们都会使用android:ellipsize,该属性可以用了来省略显示文本,但很可能不像我们原以为的那样工作。比如,我们配置了这样一个标准的TextView android:text="如果是一段很长的文本,内容长度超出了这个View的宽度,我们想要一行显示,且超转载 2016-03-24 11:01:40 · 3802 阅读 · 1 评论 -
汉诺塔算法
汉诺塔问题[又称河内塔]是印度的一个古老的传说。 据传开天辟地之神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。就是这看似简单的问题,却困扰了人们千年以上。 后来,这个传说就演变为汉诺塔游转载 2016-03-22 17:38:29 · 643 阅读 · 0 评论 -
Android访问网络,使用HttpURLConnection还是HttpClient?
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12452307最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。我也比较好奇这么使用的原因,于是专门找到转载 2016-03-22 16:18:30 · 223 阅读 · 0 评论 -
Android RelativeLayout 属性
// 相对于给定ID控件android:layout_above 将该控件的底部置于给定ID的控件之上;android:layout_below 将该控件的底部置于给定ID的控件之下;android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;android:layout_toRightOf 将该控件的左边缘与给定ID的控件右转载 2016-03-22 16:14:27 · 229 阅读 · 0 评论 -
圆角EditText
首先定义一个圆角xmlres/drawable/round_edittext.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <corners android原创 2016-03-22 14:30:55 · 240 阅读 · 0 评论 -
EditText 的inputType属性
//文本类型,多为大写、小写和数字符号。 android:inputType="none"//输入普通字符 android:inputType="text"//输入普通字符 android:inputType="textCapCharacters"//输入普通字符 android:inputType="textCapWords"//单词首字母大小转载 2016-01-14 21:08:27 · 335 阅读 · 0 评论 -
android学习记录2(日志、上下文、android下数据存储、xml基础)
软件测试黑盒测试不知道软件的源代码。知道软件的需求和功能。 * 白盒测试 知道软件的源代码。方法测试 (function test)单元测试 (junit test)集成测试 (intergration test)系统测试 (system test)android代码和javase区别运行环境 jvm dalvik日志输出 c原创 2016-01-30 14:38:26 · 443 阅读 · 0 评论 -
使用CrashHandler获取crash信息
1、背景和问题在项目开发时,程序crash是再常见不过的情况。crash发生时系统会杀掉正在执行的程序,显示为闪退或者是提示用户程序已经停止运行。而且,用户使用过程中发生的crash,我们开发者 是无法得知原因的,无法知道crash的原因,也就无法解决这个问题。2、解决方法在Android中提供了处理之类的方法,在Thread类中的一个方法setDefaultUncaughtExceptionHan原创 2017-02-08 22:46:19 · 1552 阅读 · 0 评论 -
虚拟机对象的创建
1、对象的创建流程图:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有先执行相应的类加载过程。接下来虚拟机为新生对象分配内存。对象所需内存大小在类加载完成后就可以确定,为对象分配的任务等同于把一块确定大小的内存从Java堆中划分出来。分配方式: Java堆中内存是绝对规整的-&g...原创 2019-01-04 09:27:29 · 463 阅读 · 0 评论 -
自定义蜘蛛网状图
运行效果:绘制分为三步: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 · 4594 阅读 · 0 评论 -
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 · 2866 阅读 · 0 评论 -
虚拟机对象的访问定位和内存布局
Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中之规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位访问队中的对象的具体位置,所以对象的访问方式也是由虚拟机实现而定的。目前主流方式是使用句柄和直接指针两种。通过句柄访问的话,Java堆中将会划分出一块内存作为句柄池,reference中存储的就是对象的句柄...原创 2019-01-14 15:45:38 · 439 阅读 · 0 评论 -
Android进阶知识:ThreadLocal
1、ThreadLocal是什么?ThreadLocal是一个线程内部数据存储类,通过他可以在指定的线程中存储数据。存储后,只能在指定的线程中获取到存储的数据,对其他线程来说无法获取到数据。2、ThreadLocal的使用场景日常使用场景不多,当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,可以考虑使用ThreadLocal。Android源码的Lopper、Activit...原创 2019-04-15 17:46:30 · 204 阅读 · 0 评论 -
Android进阶知识:Handler相关
1、前言Handler在Android中的地位不必说了,学习安卓开发必然跳不过Handler,讲解Handler的文章也是非常的多,这里我对我所了解的Handler这种Android中多线程间的通信方式的相关知识做一个总结。2、Handler使用Handler作为线程间通信的方式,最常使用的地方就是子线程更新UI。因为Android的UI控件不是线程安全的,如果在多线程下并发访问可能会导致U...原创 2019-04-15 17:49:08 · 286 阅读 · 0 评论 -
Android进阶知识:事件分发与滑动冲突
1、前言Android学习一段时间,需求做多了必然会遇到滑动冲突问题,比如在一个ScrollView中要嵌套一个地图View,这时候触摸移动地图或者放大缩小地图就会变得不太准确甚至没有反应,这就是遇到了滑动冲突,ScrollView中上下滑动与地图的触摸手势发生冲突。想要解决滑动冲突就不得不提到Android的事件分发机制,只有吃透了事件分发,才能对滑动冲突的解决得心应手。2、事件分发机制相关...原创 2019-04-24 09:11:30 · 449 阅读 · 0 评论 -
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 · 2104 阅读 · 0 评论 -
Java运行时数据区域
运行时数据区域。1、程序计数器是一块较小的内存空间。可看做当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。线程私有。执行Java方法计数器记录的是正在执行的虚拟机字节码指令的地址,执行Native方法,计数器值为空。此内存区域是唯...原创 2019-01-03 15:45:54 · 171 阅读 · 0 评论 -
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 · 2155 阅读 · 0 评论 -
Java中的信号量Semaphore
1、信号量概念 信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore V原创 2017-06-07 23:53:16 · 618 阅读 · 0 评论 -
仿微信图片选择器
1、概述 图片选择器也是在APP开发中常见的一个功能,检索手机本地的所有图片以GridView的形式显示在界面上,看起来一个简单的功能,但是要想要尽量避免内存溢出,还想要UI操作尽可能的流畅图片加载尽可能的快速,也不是简单的一个setImageBitmap就可以的。 2、运行效果效果图:测试手机里存储了近万张漫画图片,每个文件夹也有上千张图片,可以看到加载速度和运行流畅程度还是可以的。原创 2017-06-19 23:48:14 · 531 阅读 · 2 评论 -
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 · 221 阅读 · 0 评论 -
Android Notification 通知
这是Android 通知相关的内容的总结 android中通知用到的地方很多,经常有的例如推送消息,下载时的提示等。Android 3.0 (API level 11)之前:使用new Notification()方式创建通知:NotificationManager mNotifyManager = (NotificationManager) getSystemService...原创 2018-04-01 16:41:50 · 779 阅读 · 1 评论 -
Android Paint Xfermode实现镂空相机扫描界面
先上效果图:demo比较简单,背景颜色是黄色,然后在上面覆盖上自定义View。实际需求是在相机的View上盖上一层遮罩,遮罩中心镂空一个透明显示的圆形部分。这个需求一般的布局比较难以实现,如果要ui给一张素材图片又存在不同分辨率手机对图片的拉伸问题,中间的圆会变形,适配不好。所以想要用一个自定义View来实现,这样不仅不存在适配问题而且也比较简单。首先,简单粗暴直接上代码:package com....原创 2018-05-27 21:17:34 · 1859 阅读 · 0 评论 -
贝塞尔曲线绘制波浪
效果图: 关于贝塞尔曲线的介绍可以参照文章https://www.cnblogs.com/wjtaigwh/p/6647114.html了解完贝塞尔曲线就来完成波浪自定义View大体思路就是先绘制一条超出屏幕长的二阶贝塞尔曲线,然后再动画循环平移曲线。package com.xingyun.waveapplication;import android.animatio...原创 2018-05-27 21:36:28 · 3153 阅读 · 0 评论 -
AsyncTask源码阅读
AsyncTask使用Android中的耗时操作需要放到子线程异步处理,除了使用Thread,Android提供了一个封装好的组件AsyncTask。使用方法代码如下:public class AsyncTaskActivity extends AppCompatActivity {private TextView mProgress;private ImageView ...原创 2018-07-16 10:38:27 · 1299 阅读 · 0 评论