自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java容器(持续更新中)

ConcurrentModificationException在使用List.subList()取得subList后,可以使用subList修改List中的元素,但是如果List中做了修改操作,那么就不能再操作subList了(查询操作也不行),否则将报ConcurrentModificationException。因为List中有个modCount的字段,List每次有修改操作,modCou...

2019-03-13 00:14:29 151

原创 JDK和Android中设计模式的典型应用(持续更新中)

创建型模式单例模式:Runtime,Application工厂方法:Collection#iterator()抽象工厂:无建造者模式:AlertDialog$Builder原型:Object#clone(),Cloneable。结构型模式装饰者模式:BufferedInputStream,InputStream,FileInputStream组成。...

2019-03-03 15:25:27 269

转载 Dalvik虚拟机进程和线程的创建过程分析

我们知道,在Android系统中,Dalvik虚拟机是运行Linux内核之上的。如果我们把Dalvik虚拟机看作是一台机器,那么它也有进程和线程的概念。事实上,我们的确是可以在Java代码中创建进程和线程,也就是Dalvik虚拟机进程和线程。那么,这些Dalvik虚拟机所创建的进程和线程与其宿主Linux内核的进程和线程有什么关系呢?本文将通过Dalvik虚拟机进程和线程的创建过程来回答这个问题。...

2019-03-28 15:59:13 846

转载 Java用户级线程和核心级线程的区别是什么

以上内容转自:https://blog.csdn.net/qq_34173549/article/details/79564161#commentsedit下面是本人的理解小结:我的理解是每个进程持有多个轻型进程(即内核级线程),而java中Thread创建的线程是用户级线程。假设进程分配到了x个内核线程,而java进程中创建了y个用户级线程。那y个用户级线程将轮流关联到x个内核...

2019-03-28 14:23:02 2542 1

转载 Java 序列化机制 -- 控制序列化的兼容性

serialVersionUID表示序列化版本简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastEx...

2019-03-27 12:21:07 918

转载 Java的格式化输出

System.out的print和println方法,可以向控制台输出不同类型的数据,可以满足程序调试信息的输出要求。在实际应用中,输出数据时,要求数据必须按照一定的格式输出,如数据精度要求,小数点后保留2位有效数字、按照规定的格式输出日期、按照表格方式输出数据等要求。System.out的printf方法可以对数据进行格式化输出,printf方法在Java API 文档中声明如下:voi...

2019-03-26 18:09:53 3187

原创 Java BitSet

适用于操作整型数据。每个数据由一位bit表示,也就是说每一个整型只需一个bit的控件,这个比collection等容器是有天大的优势啊。而且插入和查询都非常方便,因为bit的index和整型数值相等,如:存储127,那么BitSet中的第127位bit就被置为1。查找127是否在BitSet中,只需使用MASK进行与操作即可。但是可以想象到,BitSet中至少需要有多少位bit,决定于存储在B...

2019-03-25 13:47:22 1139

转载 需要动态申请的权限和普通权限

权限分为两种:第一种就是危害不大的,比如手机振动权限,这种权限是用户在安装程序的时候添加的,和之前请求权限是一样的,没有任何变化,就是在清单文件中添加相关的权限,这些权限我简单的列了出来: android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE...

2019-03-14 17:11:23 2819

原创 ViewPager和ViewFlipper的基本原理

ViewPager extends ViewGroupViewPager实现了onMeasure,onLayout,draw(),onDraw(),draw()中主要是绘制EdgeEffect(阻尼效果),onDraw中主要是绘制marginDrawable。使用VelocityTracker,Scroller及scrollTo()方法实现滑动和flingViewFlipper ex...

2019-03-11 19:19:17 686

转载 Android Bitmap的常用压缩方式

一、前言已经好久没有更新博客,大概有半年了,主要是博主这段时间忙于找工作,Android岗位的工作真的是越来越难找,好不容易在广州找到一家,主要做海外产品,公司研发实力也不错,所以就敲定了三方协议。现在已经在公司实习了一个月多,目前主要是负责公司某个产品的内存优化,刚好就总结了一下Android Bitmap常用的优化方式。Android中的图片是以Bitmap方式存在的,绘制的时候也是B...

2019-03-11 12:35:17 1089

原创 AbsListView小结

1.滚动时,无论时FlingMode还是ScrollMode,最终都是调用trackMotionScroll(),其中包括了View回收的计算及执行,trackMotionScroll()使用了offsetChildrenTopAndBottom()对children做坐标变换。2.ScrollMode时,主要调用scrollIfNeeded(int x, int y, MotionEvent...

2019-03-10 23:05:51 928

转载 Android ListView工作原理完全解析,带你从源码的角度彻底理解

在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到成百上千条甚至更多,L...

2019-03-10 22:49:53 153

原创 OverScroller、Scroll到edge时的阻尼效果,overScrollBy和scrollTo,AbsListView和ScrollView的滚动实现区别

OverScroller和Scroller类似,都只是根据duration、已过去的时间,start position,final position,根据某种interpolator计算某个时刻的scrollX和scrollY(这里说的scrollX/Y和View的成员mScrollX/Y无关)。AbsListView和ScrollView添加阻尼效果使用的Scroller都是OverScro...

2019-03-10 21:29:34 1119

转载 Android中ListView的几种常见的优化方法

转自:https://www.cnblogs.com/peterpan-/p/5956424.htmlAndroid中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法:首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的Lis...

2019-03-10 19:00:20 158

原创 ListView的OnItemClickListener是如何被调用的

1.首先是item的view没有处理这个down事件,只好ListView来处理,接着的up事件必然也会由ListView来处理。2.如果是一个tap动作,即点击,那么处理up事件时就会去调用OnItemClickListener,在AdapterView#performItemClick(View view, int position, long id)中调用。那么怎么根据event.g...

2019-03-09 17:21:45 2878

原创 Spinner的实现

1.dropdowm mode:使用的是ListPopupWindow:设置ListPopupWindow的ListView的OnItemClickListener:public DropdownPopup( Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) ...

2019-03-08 14:22:34 239

原创 窗口尺寸,屏幕尺寸,导航栏高度,状态栏高度

注意:布局窗口是在handleResumeActivity中完成的,但是是先调用onResume再布局窗口的,所以在onResume中获取尺寸是不行的。获取屏幕尺寸: public void onClick(View v) { Rect r = new Rect(); //不包括导航栏和状态栏。是相对于屏...

2019-03-07 22:11:15 2204

原创 PopupWindow的使用

1.记得要设置背景,否则将无法点击外面消失2.PopupWindow是没有使用PhoneWindow的,直接WindowManager.addView(),窗口类型为子窗口。3.PopupWindow有默认的Transition动画,也可以通过setAnimation方法闯入style id设置窗口动画4.PopupWindow是通过获取anchorView在窗口坐标系的位置,结合of...

2019-03-07 21:09:29 231

转载 DataBinding入门完整教程

DataBinding,2015年IO大会介绍的一个框架,字面理解即为数据绑定。由于一般的开发过程中,Activity既需要做实现网路请求的代码,又需要实现界面的渲染/用户之间的交互,如果一个页面的功能更为复杂 对后期的项目维护更加艰难。因此,推出该框架有利于简化功能模块 尽量将界面的渲染/用户交互的功能分化在单独的模块中。一个案例简单入门举个例子,我们想对某个文本控件设置显示文本,首先要通...

2019-03-06 23:43:20 965

转载 Android Studio升级到3.1.2,找不到DDMS

Android Studio升级到了3.1.2,使用Android Profiler替代DDMS在Android Studio侧边栏这也能找到

2019-03-06 23:35:52 328

原创 Material Design Animation

切换Activity的Transition动画:需要开启如下属性:<item name="android:windowContentTransitions">true</item>如果需要设置动画切换时是否允许覆盖,即在前一个完全动画消失,后一个可以开始动画出现,即两个Activity的动画顺序关系,如果为false,则是前一个动画完全消失后,后一个才开始动...

2019-03-06 17:56:38 390

原创 导入github中google的demo项目到AndroidStuido中出现Task 'assemble' not found in root project

按照stack overflow中的信息,把.ideal目录和xxx.iml删除,再重新导入不行。在根目录下build.gradle中加入task assemble{}还是不行。对比其他可运行的项目中有根目录下的build.gradle不是空文件,把其他项目的build.gradle的内容拷贝过来。把settings.gradle中的include "application"改成i...

2019-03-05 21:39:38 4994

原创 Android使用GUI时一些有用的方法

//在调用contentView的layout()方法时,该监听器会被调用contentView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top,...

2019-03-05 16:20:48 461

原创 自定义窗口动画

自定义窗口进入动画:Animation Resources xml动画资源语法:https://developer.android.google.cn/guide/topics/resources/animation-resource#translate-element在xml中定义View animation,文件名为floating_window_enter.xml:&lt;se...

2019-03-04 22:35:58 378

原创 Activity各个生命周期如何处理窗口

1.在ActivityThread#handleLaunchActivity():activity.attach(appContext, this, getInstrumentation(), r.token, r.ident, app, r.intent, r.activityInfo, title, r.parent, ...

2019-03-01 23:51:15 389

转载 触摸事件从ViewRootImpl到DecorView的派发过程

ViewRootImpl &amp; ViewGroup &amp; View 触摸事件派发机制源码分析Android 6.0 &amp; API Level 23 Github: Nvsleep 邮箱: lizhenqiao@126.com简述Activity顶层窗口接受屏幕触摸事件的准备以及对输入事件到来时候的预处理; ViewGroup的事件派发机制dispatchTou...

2019-03-01 21:38:28 592

android-all-9-robolectric-4913185-2.jar

单元测试使用robolectric框架时需要下载的依赖,但是使用Android Studio下载太慢了,下载该资源直接放在C盘用户根目录下的相对路径.m2\repository\org\robolectric\android-all\9-robolectric-4913185-2下, 那么在build.gradle声明testImplementation 'org.robolectric:robolectric:4.3',则会跳过下载该资源

2019-11-03

SourceInsight.rar

里面包含SourceInsight4安装包及license的lic文件

2019-08-21

空空如也

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

TA关注的人

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