- 博客(86)
- 资源 (13)
- 收藏
- 关注
原创 ImageView 的scaleType 记录
imageView scaleType1:FitXY 充满所给的区域2:center 不拉伸或者压缩图像,单纯的居中3:centerCrop 保持图像的宽高比,以较长边为准,会超出边界;会填充满整个布局,展示对应对应图片的部分或者全部。4:centerInside 保持图像宽高比,不会对图片进行拉伸,只会进行等比例压缩,不会填充整个布局,会有留白(除非刚好显示整张图片);5:f...
2018-10-08 14:54:59 230
原创 Fresco gif不能使用圆圈或圆角的处理方式
起因是这样的,使用recycleView加载items的时候需要封面需要时gif或者是img。这个时候出现了img的item是圆角的但是gif不是圆角。解决办法:在xml文件中使用fresco:roundWithOverlayColor="@color/you_color_id""you_color_id"是指你的背景色,这样也可以实现圆角、圆圈效果解释:fresco不...
2018-09-30 18:12:51 1083
原创 反转单链表并返回反转之后的单链表的头节点
代码如下所示:public static ListNode reverseList(ListNode head) { ListNode root = new ListNode(); root.next = null; ListNode next; while (head != null) { next ...
2018-08-04 22:11:20 1497
原创 官方Canvas and Drawables翻译以及批注
Android框架提供了一套二维绘图API,可让你将自己的自定义图形渲染到画布上或修改现有视图以自定义其外观和感觉。 你通常以以下方式之一绘制二维图形: - a:在布局中的View对象上绘制你的图形或动画。 使用此选项,会调用系统的渲染管道处理的图形 (需要在视图中定义自行定义) - b:在Canvas对象中绘制图形。使用此选项,需要你将画布传递到适当的类’onDraw(Canvas)’方法。你
2017-09-15 19:42:44 874
原创 View Animation和Drawable Animation
View Animation(属性动画那一篇真是受够了那个编辑器,所以到Markdown上来了) 你可以使用视图动画系统在视图上执行补间动画。Tween动画使用诸如动画的起始点,终点,大小,旋转以及其他常见方面的信息来计算动画。(编者按:Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的这么一种转换过程,我们称为补间动画。)补间动画可以对View对象的内容执行一系列简单的转换(位置,大
2017-09-07 20:28:43 360
原创 官方Property Animation翻译(全部)以及批注
之前一直都是翻译并标注了哪几块哪几块,现在终于可以说,标注完了,O(∩_∩)O哈哈哈~
2017-09-06 19:33:45 921 1
原创 getTranslationX与getLeft()的联系
假设原来的控件位置(mLeft,mTop)以左边为例:getTranslationX():获取到控件的移动距离,正方向为正,负方向为负。getLeft():控件相对于父布局左边界的距离getLeft()=mleft+getTranslationX();上边也一样:getTop()=mTop+getTranslationY();
2017-09-04 15:23:52 653
原创 实现可滑动,能在外部动态控制ListView显示个数的Android项目
步骤:这里是用一个RelativeLayout实现ListView的一个title,在title中有一个Image通过点击这个image,来控制ListView的显示个数。第一步:新建两个类分别继承RelativeLayout和ListView(title的layout我就不写了,只要是开发的都会写)public class SettingListView extends List
2017-08-11 11:55:57 495
原创 回调函数
前言: 最近在一个地方用到回调函数,差不多一年之前接触过,也写了demo,但是碰见还是半懂不懂的,所以把这次写的demo写成博客,再看的时候也能快些。首先都在说回调,但是我到现在也不是明确的理解哪里回调了,知道代码的逻辑流程,但是还是不理解为什么叫这么个名字,可能有人跟我一样,也可能我比较愚钝,不能一点就透。 回调分为三个关系体:调用者,被调者,被调者的父类(看了
2017-08-10 18:36:29 269
原创 修改AndroidStudio默认的compileSdkVersion(纠正了大部分文章的错误)
起因最近使用AndroidStudio的时候想要修改一下compileSdkVersion,因为现阶段26并没有相应的API sources,所以想看源码的时候就不能看(我丢)。然后就想着能不能修改默认的compileSdkVersion,设置它的compileSdkVersion为25,然后就去网上搜了一下,网上文章给出的建议是:按照给出的路径/plugins/android/l
2017-07-27 11:02:12 25249 16
原创 自定义安卓Button样式
Talk is cheap,Show you the code.估计很多朋友对上面的一些属性不是很清楚,比如selector,item,shape,corners,stroke,solid等不太了解,下面的代码就是他们的详细介绍。(上面的代码是我找到的使用最全的,你如果有自定义Button需求的话应该够用了)。上面的可以拆成两部分。第一部分是selector和下面的item属性。第二部分是sh
2017-05-25 17:11:12 1118
原创 windows上面装node但是npm一直查不出版本号
准备做混合型开发,要用到npm,转好之后一般都会以查版本号的形式来查看是否安装成功,但是node的版本号可以查出来,但是npm的版本号一直查不出来,看了很多都说node本身集成了npm并且会自动添加到路径中。尝试过手动安装,但是毫无效果,再单独添加路径进去也不行。关机,下午回来发现可以了。Windows的弊端之一。
2017-02-27 15:16:34 6051
原创 bindService 和startService 终止方法
1: bindService 解除绑定方法:(1) unbindService 解除绑定(2)尽管 Activity 被 finish 的时候绑定会自动解除2:startService 的终止方法:(3)调用stopService,(4)或自身的stopSelf方法。(当然如果系统资源不足,android系统也可能结束服务。)3:同时使用 startService 与 bindServic
2016-09-29 11:47:02 5286
原创 java中static代码块和构造函数的调用顺序
之前看到过,后来有点模糊了就写篇记录一下。package com.java.text;public class Father { static { System.out.println("父类--静态代码块"); } public Father() { System.out.println("父类--构造函
2016-09-26 15:57:47 381
原创 java线程并发笔记
无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象。在java中每一个对象都可以作为锁,它主要体现在下面三个方面:对于同步方法,锁是当前实例对象。 对于同步方法块,锁是Synchonized括号里配置的对象。对于静态同步方法,锁是当前对象的Class对象。 下面是同步方法的一段代码public class ThreadTest implements
2016-09-26 14:32:22 317
转载 AndroidStudio好用的插件
AndroidStudio好用的插件在开发过程中,本人用的最爽的就是代码生成的插件,帮助我们自动完成大量重复简单的工作。个人也觉得代码自动生成工具是最值得推荐的。因此下面的插件以代码生成的插件为主。1. Android ButterKnife Zelezny在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解。
2016-09-21 14:07:11 1417 1
转载 Android通用流行框架大全
Android通用流行框架大全1. 缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picas
2016-09-21 12:18:44 365
转载 JNI编程中如何传递参数和返回值。
本篇将介绍在JNI编程中如何传递参数和返回值。首先要强调的是,native方法不但可以传递Java的基本类型做参数,还可以传递更复杂的类型,比如String,数组,甚至自定义的类。这一切都可以在jni.h中找到答案。1. Java基本类型的传递用过Java的人都知道,Java中的基本类型包括boolean,byte,char,short,int,long,float,dou
2016-09-20 16:24:59 1234
原创 Android你需要了解的知识点
1、Android四大组件;2、动画、滑动冲突、自定义View、事件分发机制;3、多进程和多线程、以及相关的通信机制:AsycnTask、Handler、Binder、AIDL;4、Android的数据存储方式;5、UI布局、Fragment的使用;6、内存&性能优化、图片的处理、屏幕适配;7、网络通信的几种实现、断点续传的实现、了解TCP/IP、UDP、HTTP等网络协议
2016-09-14 13:41:58 396
原创 自定义控件和fragment使用流程和区别。
自定义控件:1:新建自定义控件xml文件2建立Java文件继承自View或者其子类,并在里面使用(可以在构造函数中使用)LayoutInflater.from(context).inflate(R.layout.a,this)动态加载。也可以在Java文件中对该布局里面的控件进行监听。3使用自定义控件,代码如下。 android:layout_width="mat
2016-09-07 17:03:07 1438
原创 多线程规避死锁方法
只在必要的最短时间内持有锁,考虑使用同步语句块代替整个同步方法;尽量编写不在同一时刻需要持有多个锁的代码,如果不可避免,则确保线程持有第二个锁的时间尽量短暂;创建和使用一个大锁来代替若干小锁,并把这个锁用于互斥,而不是用作单个对象的对象级别锁。
2016-09-06 16:34:56 842
原创 synchronized 详解
在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确保在某一时刻,方法内只允许有一个线程。采用 synchronized 修饰符实现的同步机制叫做互斥锁机制,它所获得的锁叫做互斥锁。每个对象都有一个 monitor (锁标记),当线程拥有这个锁标记
2016-09-06 15:24:56 714
转载 Java 理论与实践: 正确使用 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要特性:
2016-09-06 14:18:25 239
转载 计算机网络部分的面试常考点
整理一下计算机网络部分的面试常考点,参考书籍:《计算机网络》第五版 谢希仁的那本,希望对大家有所帮助 OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
2016-09-05 18:17:21 743
原创 单例模式深探-懒汉式和饿汗式
什么是单例模式首先说句题外话,单例模式在很多的开源框架和项目都随处可见,所以单例模式的重要不言而喻,在一些稍微大点的公司设计模式肯定是会在面试中会问到的,单例模式的命中率不亚于工厂模式等设计模式(在之后的会陆续补上其它项目中经常用到的设计模式)进入正题,什么是单例模式,通俗的说就是:在整个对象中,单例类只能有一个实例,单例类必须自己创建自己的唯一实例单例类必须给其它对象提供这一实例
2016-09-05 10:45:21 1510
原创 高效加载大图
图片有不同的形状与大小。在大多数情况下它们的实际大小都比需要呈现的尺寸大很多。例如,系统的图库应用会显示那些我们使用相机拍摄的照片,但是那些图片的分辨率通常都比设备屏幕的分辨率要高很多。考虑到应用是在有限的内存下工作的,理想情况是我们只需要在内存中加载一个低分辨率的照片即可。为了更便于显示,这个低分辨率的照片应该是与其对应的UI控件大小相匹配的。加载一个超过屏幕分辨率的高分辨率照片不仅没有任何
2016-09-02 17:48:35 335
原创 使用adb shell对SQLite进行相关查询
写这篇文章呢是被我的adb烦的,只成功了一次,所以我在怀疑是不是偶然成功的。。。。这个是我没启动虚拟机的时候cmd.exe给出的信息,要我打开虚拟机。汗。。。重启ADB之后,打开虚拟机和eclipse程序,再次输入命令行 adb shell 出现这样的提示,看起来好一点,只是看起来,在用cd命令到 数据库的时候出错了。。。就像这样。这种事常见的行不通的方式,重启
2016-09-02 10:55:45 958
原创 Android数据存储SQLite-使用sql操作数据库
SQLiteDatabase db=new SQLiteDatabase();public static final String CREATE_BOOK = "create table Book (" + "id integer primary key autoincrement, " + "author text, "
2016-09-01 15:40:55 634
转载 HTTP 协议简介
转载自http://blog.jobbole.com/104886/一、TCP/IP 协议介绍在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容。TCP/IP协议是分层的,从底层至应用层分别为:物理层、链路层、网络层、传输层和应用层,如下图所示:从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下:其中
2016-08-30 14:19:15 549
原创 代码段
1:Android开辟新线程,以Runnable()对象作为构造参数。new Thread(new Runnable() { @Override public void run() { try { } catch (Exceptio
2016-08-29 17:44:54 353
原创 Java中== equals hashcode解析
1. '=='是用来比较两个变量(基本类型和对象类型)的值是否相等的, 如果两个变量是基本类型的,那很容易,直接比较值就可以了。如果两个变量是对象类型的,那么它还是比较值,只是它比较的是这两个对象在栈中的引用(即地址)。对象是放在堆中的,栈中存放的是对象的引用(地址)。由此可见'=='是对栈中的值进行比较的。如果要比较堆中对象的内容是否相同,那么就要重写equals方法了。2. Objec
2016-08-26 18:15:49 530
转载 java中hashcode()和equals()的详解
本来想自己看看Java编程思想自己写的,不过偶然看到有个哥们已经写了,也是根据Java编程思想写的,感觉很好就不自己写了。转载自:http://www.iteye.com/topic/2571911. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在object类中定义如下: public boolean equ
2016-08-26 18:12:02 434
原创 2017 阿里实习 JAVA 研发工程师面经
很遗憾这篇面经不是我的,但是所有的回答信息是我自己总结出来的。#一面 1.写出知道的所有单例模式的写法 2.整数的二进制找出有几个 1,效率要求最高 3.会场安排问题 4.如何用两个栈模拟一个队列(前面四道考了 30 多分钟) 5.TCP 三次握手的过程 6.http 了解吗?(这道我直接说没有深入研究 web 开发) 7.java 集合类,哪些线程安全,哪
2016-08-26 17:58:39 4212
原创 剑指offer-Java-二进制中 1 的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1的个数。例如 把 9表示成二进制是 1001;有 2位是 1,因此如果输入 9,函数输出 2.public class Problem10 {public static void main(String args[]){Problem10 test=new Problem10(); System.o
2016-08-26 14:54:13 516
原创 剑指offer-Java-旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为 1.public class Problem8 {public static void main(String[] args) { Problem8 p8=new P
2016-08-26 14:52:38 482
原创 剑指offer-Java-用两个栈实现队列
题目描述:用两个栈实现一个队列,实现对了的两个函数 appendTail和 deleteHead,分别完成在队列尾插入结点和在队列头部删除结点的功能。public class Problem7 {private Stack stack1=new Stack(); private Stack stack2=new Stack();public void appendTail(T t
2016-08-26 14:51:03 460
原创 剑指offer-Java-从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。方式1:非递归的实现public class PrintListReverse{public static void main (String args[]){ListNode node1=new ListNode(); ListNode node2=new ListNode(); ListNode node3=
2016-08-26 14:47:29 780
原创 Lock 与 Synchronized
多线程保证数据的线程安全与数据同步 多线程开发中不可避免的要用到锁,一段被加锁的代码被一个线程执行之前,线程要先拿到执行这段代码的权限,在Java里边就是拿到某个同步对象的锁(一个对象只有一把锁),如果这个时候同步对象的锁被其他线程拿走了,这个线程就只能等了(线程阻塞在锁池等待队列中)。拿到权限(锁)后,他就开始执行同步代码,线程执行完同步代码后马上就把锁还给同步对象,其他在锁池中等待的某个
2016-08-26 10:05:46 743
原创 关于Java集合类中线程安全与不安全问题笔录
关于Java集合类是面试中的常客,线程安全也是,所以就想写篇文章好好分析一下。线程安全的类Vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。Statck:堆栈类.hashtable:就比hashmap多了个线程安全.enumeration:枚举,相当于迭代器.除了这些之外,其他的都是非线程安全的类和接口。线程安全的类其方法
2016-08-25 11:56:31 819
原创 JNI: Java类中静态和非静态方法的区别
在java中声明的JNI的静态方法(native static)和非静态方法,对于底层的C/C++代码来说是有区别的:JNI函数的参数也由三部分组成:首先是JNIEnv*,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同一一非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用;其余的参数对应通常Java方法的参数,参数类型需要
2016-08-23 17:35:15 774
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人