自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ShadowfaxGHH

You have no choice but to fight.

  • 博客(102)
  • 收藏
  • 关注

原创 NDK[2]Java方法到C方法 和 C方法到Java方法

【参考链接】 程序运行时,以主线程的main()方法为入口,不停的从一个方法调用到另一个方法中,方法返回再继续调用其他的根据之前JVM的知识,其实就是在不停向栈中压入栈帧、弹出栈帧所以既可以在java方法中调用C/C++方法,也可以在C/C++方法中调用Java方法,只不过这两种栈是分开维护的。 Java方法到C/C++方法给一个类定义一个native方法,实现其对应的C/C++方法,在Java中...

2018-04-18 10:30:38 298

原创 NDK[1]ndk、ADT、AndroidStudio

【参考链接】向您的项目添加 C 和 C++ 代码https://developer.android.com/studio/projects/add-native-code.htmlAndroidStudio 2.2 CMAKE 高效NDK开发http://m.blog.csdn.net/l_215851356/article/details/74691147AndroidStudio进行 JNI ...

2018-04-18 10:28:08 327

原创 NDK[0]jni

【参考链接】Windows下使用Java Jni调用C/C++初探http://blog.csdn.net/pxhero2012/article/details/52926082 JNI的作用是在Java代码中调用C/C++代码编写的动态库。在Windows系统上,C/C++动态库的格式是.dll,在Linux/Android等系统上,C/C++动态库的格式是.so。本文以Windows系统下的J...

2018-04-18 10:22:57 285

原创 [1]System.gc()

 System.gc()会触发FullGC,回收新生代、老年代。(还有方法区)以如下代码为例 Java Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //-Xms16M -Xmx16M -Xmn8m -XX:SurvivorRatio=2 -XX:+PrintHeapAtG...

2018-04-18 10:15:21 322

原创 [0]Runtime.memory()

 可以使用Runtime来获取到当前程序内存空间的状态如下代码所示 Java Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 //-Xms16M -Xmx20M -Xmn8m -XX:SurvivorRatio=...

2018-04-18 10:14:17 248

原创 虚拟机启动参数

启动Java虚拟机时,可以为其设置启动参数在命令行中,通过如下方式来设置java[-options] classfile在Eclipse中,通过如下方式来设置(新建或运行一次以后再设置)此外从上面还可以看出还可以设置传递给main()方法的参数,这里不再赘述。  常用的参数如下加载-Xbootclasspath/a:D:/temp、-Xbootclasspath/p:D:/temp将D:/temp...

2018-04-18 10:12:54 1172

原创 内存溢出

【参考链接】内存溢出http://wiki.jikexueyuan.com/project/java-vm/storage.html  当某一块内存空间不够用时,就会出现内存溢出前面我们知道,虚拟机的内存空间可以分为方法区、栈、堆没有提供方式来设置整个虚拟机内存的大小对于方法区在Java1.8之前又可称为永久区,可以使用-XX:PermSize和-XX:MaxPermSize来指定在java1.8...

2018-04-18 10:08:33 169

原创 堆内存:划分、识别垃圾对象、分配策略和回收时机

【参考链接】Java 垃圾收集机制http://wiki.jikexueyuan.com/project/java-vm/garbage-collection-mechanism.html  划分堆内存划分为新生代和老年代,新生代又分为eden和survivor(伊甸园和幸存者),survivor又分为大小相同的两块from和to。    ...

2018-04-18 10:05:50 397

原创 对象内存模型[3]线程

【参考链接】 我们在启动线程的时候,也经常使用匿名内部类的方式,那么此时内存的状态是怎样的呢?以如下代码为例  已经加了断点,在Eclipse中启动调试,两个线程都停在了加断点的地方 在main线程中,有main()方法的栈帧,其中有两个局部变量,String[0]类型的args和Test类型的t。 (因为main()方法是静态的,所以没有局部变量this)  在Thread-0线程中,有匿名内部...

2018-04-18 09:59:33 186

原创 对象内存模型[2]内部类

【参考链接】Java内部类详解http://www.cnblogs.com/dolphin0520/p/3811445.html静态内部类和非静态内部类的区别http://www.cnblogs.com/dolphin0520/p/3811445.html为什么Java内部类要设计成静态和非静态两种?https://www.zhihu.com/question/28197253  内部类分为静态内...

2018-04-18 09:56:25 746 1

原创 对象内存模型[1]String

【参考链接】 一个String对象在堆上占用几个字节虽然String对象所代表的字符串可能是多种多样的,但是一个String对象在堆内存中所占用的内存空间大小是固定的,这是因为为了节省内存空间,一个应用程序中,所有的字符串常量都集中、不重复的保存在一个表中,这个表叫做字符串“拘留表”。一个String类型内部包含如下两个成员变量:char[],字符数组,本质是个引用,指

2017-12-01 00:00:48 2217

原创 对象内存模型[0]

【参考链接】java对象的内存布局http://blog.csdn.net/aitangyong/article/details/46416667一个Java对象到底占用多大内存?http://www.cnblogs.com/magialmoon/p/3757767.html  前面在描述内存状态变化时,堆内存只是简单的以一个方块来代替那实际上堆内存是怎样的呢? 本

2017-11-30 23:59:19 2213

原创 栈内存状态变化概述

【参考链接】实例分析Java代码运行时内存布局http://blog.csdn.net/wangyy130/article/details/52100907运行时数据区http://blog.csdn.net/u012440687/article/details/52021393 1、栈帧的顺序画反了2、这里都是通过参数进行数据传递,主要是在操作局部变量表,如果通过对象的成员变

2017-11-30 23:57:39 2555

原创 字节码指令

下面会指令族的概念,先说明一下前缀x取值含义iintbbyteccharsshortllongffloatddouble

2017-11-30 23:55:04 2462

原创 class文件结构[5] 局部变量表的槽位复用及其对垃圾回收的影响

long、double类型在局部变量表中需要占用2个槽位其他类型如int、引用类型需要占用1个槽位 非static的成员方法的第一个局部变量都是this引用 以上一节的例子为例一共占用5个槽位,其中D(double)类型的arg1占用2槽位,其余各占用1个槽位。 局部变量表中的槽位是可以复用的如果一个局部变量过了其作用范围,那么在其作

2017-10-31 10:35:04 2974 1

原创 class文件结构[4]

【参考链接】深入理解Java Class文件格式(三)http://blog.csdn.net/zhangjg_blog/article/details/21557357深入理解Java Class文件格式(四)http://blog.csdn.net/zhangjg_blog/article/details/21658415深入理解Java Class文件格式(五)http://bl

2017-10-31 10:25:20 2198

原创 class文件结构[3] 常量池

【参考链接】《Java虚拟机原理图解》 1.2、class文件中的常量池http://blog.csdn.net/luanlouis/article/details/40148053《Java虚拟机原理图解》1.2.2、Class文件中的常量池详解(上)http://blog.csdn.net/luanlouis/article/details/39960815《Java虚拟机原理

2017-10-31 10:16:09 350

原创 class文件结构[2] static final、static、final、普通类型成员变量的赋初值

不考虑作用域修饰符,成员变量的类型有:static final 类型、仅static类型、仅final类型、普通类型并且,我们在定义成员变量的时候,还可以通过=赋初值。(其中包含final时强制要求赋初值)那么,这些赋值操作都是在哪个阶段完成的呢? 按照执行的先后顺序1.        对于staticfinal类型成员变量,会在class文件的Fields中增加Const

2017-10-31 10:07:59 2529 1

原创 class文件结构[1] 编译前预处理

1.      如果一个类没有显式继承自Object,则会自动为其加上继承自Object以如下代码为例 Java Code 1234 package com.test.a;public class Test {}  2.      在创建一个对象时,必须先创建他的父对

2017-10-31 10:02:16 2296

原创 class文件结构[0]

.java源代码文件经过编译以后会生成.class字节码文件。可以使用WinHex直接以十六进制形式查看也可以使用javap命令和jclasslib软件(注意64位操作系统匹配,和版本不要太低,我使用低版本的时候出现过字节码指令显示错误的问题) 后面讲解的时候,不打算详细到具体字节所以主要通过javap命令和jclasslib软件。这两个方式的展示各有优缺,后续展示常量池的时候

2017-10-31 09:59:26 2185

原创 流程概述:编译、装载、执行

【参考链接】走进 Javahttp://wiki.jikexueyuan.com/project/java-vm/overwise.htmlJava代码编译和执行的整个过程http://wiki.jikexueyuan.com/project/java-vm/java-debug.html 从编写Java源代码,到运行Java程序,大体上会经历3个阶段:编译、加载、执行

2017-10-31 09:57:20 2179

原创 Activity、Window、View、Surface[1]整体框架

主要涉及到 应用程序进程 和ActivityManagerService、WindowManagerService、SurfaceFlingerService三大服务。其中 应用程序进程 中的对象有Activity、Window、View、Surface。(其实还有非常多)Window对应于WindowManagerService中的WindowState对象,用于给WindowMan

2017-09-19 16:52:42 2924

原创 ListView[2] 源码解析

【参考链接】AndroidListView工作原理完全解析,带你从源码的角度彻底理解http://blog.csdn.net/guolin_blog/article/details/44996879 ListView当中使用了View复用机制其父类AbsListView中有个RecycleBin子类,其中有ActiveViews和ScrapViews两个成员变量,主要是ScrapV

2017-09-14 17:45:06 2213

原创 ListView[1] 显示效果

【参考链接】ListView的HeaderViewhttp://blog.csdn.net/caiwenfeng_for_23/article/details/38276403 item1、ListView的item的布局文件,最外层的View/ViewGroup,不管布局文件中是如何写的,最终layout_width会被自动置为match_parent,layout_heig

2017-09-14 16:51:32 2376

原创 ListView[0] 功能

【参考链接】 一个ListView的基本使用方式如下activity的布局文件    android:id="@+id/lv"    android:layout_width="match_parent"    android:layout_height="match_parent"    />item的布局文件xml version="1.0"en

2017-09-14 16:41:11 2258

原创 动画[6]PropertyAnimator LayoutTransition

【参考链接】LayoutTransition(布局容器动画)http://www.bubuko.com/infodetail-826585.html 从API 11开始,Android为ViewGroup提供了setLayoutTranslation()方法通过为ViewGroup指定LayoutTranslation,当ViewGroup调用addView()、removeVie

2017-09-12 11:37:51 2248

原创 动画[5]PropertyAnimator AnimatorSet

【参考链接】 还可以使用AnimatorSet将多个ValueAnimator/ObjectAnimator组合到一起可以通过如下方式来控制多个动画的协作方式.play(anim1).with(anim2)//同时执行                    .before(anim2)//先执行anim1,再执行anim2                    .a

2017-09-12 11:35:49 2142

原创 动画[4]PropertyAnimator ObjectAnimator

【参考链接】AndroidAnimation学习http://www.cnblogs.com/mengdd/p/3305698.html ObjectAnimator继承自ValueAnimator,所以ValueAnimator中的方法ObjectAnimator也都可以使用。ObjectAnimator内部其实是通过反射来调用方法来修改对象的属性,所以该类需要有此属性的get(

2017-09-12 11:33:58 2154

原创 动画[3]PropertyAnimator ValueAnimator

【参考链接】 ValueAnimator本身并不作用于任何对象,他可以对值做动画,然后我们可以监听动画过程,在动画过程中使用计算出的值来修改对象的属性 of()addUpdateListener()通过of()来指定估值器和起始值终止值(相当于setEvaluator()+setValues()),通过addUpdateListener()来监听动画过程。ValueAn

2017-09-12 11:30:11 2164

原创 View[7] Property

【参考链接】从setTranslationX谈属性动画和view动画的区别http://blog.csdn.net/yanzi1225627/article/details/47850471 从Android 3.0/API 11开始,Android为View增加了一些Property。通过改变这些Property也能够改变View的显示效果。这些Property包括alp

2017-09-12 11:11:06 2177

原创 动画[2]TweenAnimation 使用场景

【参考链接】 TweenAnimation常用于View的动画, ViewView提供了startAnimation()、cancelAnimation()用于开始、停止一个动画还有setAnimation(),它只是设置Animation的启动时间并附加到View上,需要自己重绘触发开始动画,startAnimation()内部就是这样 ViewGroup

2017-09-12 11:08:31 2111

原创 动画[1]TweenAnimation 设置

【参考链接】 TweenAnimation虽然提供了各种不同的动画,但是也具有一些相同的方法setDuration()持续时间 setFillAfter()动画结束时View是否停留在结束位置,true表示停在false表示不。 setRepeatCount()重复次数,如果-1则无限循环 setRepeatMode()设置为Animation.

2017-09-12 10:33:25 2126

原创 动画[0]TweenAnimation 各种TweenAnimation

【参考链接】  仅通过View.startAnimation()来演示一下如何书写各种TweenAnimation及其效果。下面可能涉及到绝对值、相对值的概念 xmljava绝对值0、100Animation.ABSOLUTE, 0相对值-100%

2017-09-12 10:27:36 2215

原创 触摸[7] GestureDetector

【参考链接】用户手势检测-GestureDetector使用详解http://blog.csdn.net/harvic880925/article/details/39520901 跟GestureDetector相关的有两个接口和一个外部类接口:OnGestureListener、OnDoubleTapListener内部类:SimpleOnGestureListener

2017-09-05 15:34:11 2113

原创 触摸[6] OverScroller

【参考链接】ScrollView、ListView剖析 -上下拉伸回弹阻尼效果http://www.jianshu.com/p/834e522d02dc 前面讲到了Scroller,这里就不得不讲下OverScroller。系统自带的ScrollView,只能在内容范围内滑动(在滑动到达边界时会有发光效果)但是实际上,ScrollView内部已经实现了

2017-09-05 15:29:00 2273

原创 触摸[5] Scroller

【参考链接】 前面只实现了内容随手指滑动而滑动,如何在手指离开屏幕以后还能继续平滑滑动一段距离呢?要实现平滑滑动,需要借助于Scroller类,它其实是通过起始位置、终止位置或初始速度,加上持续时间,计算出中间时刻的滑动位置,然后不断触发重绘来实现的。即通过不断的移动一个小的距离来实现整体的平滑滑动效果。提供了两个方法startScroll(),给它传入滑动的起始位置、终止位置

2017-09-05 15:18:09 2233

原创 触摸[4] VelocityTracker

【参考链接】 可以使用VelocityTracker类来获得手指滑动时的速度假设computeCurrentVelocity()中设置的时间间隔是1000ms,在1000ms内手指在水平方向从左向右滑动了100像素,那么计算出来的值就是100。注意速度的正负值跟屏幕坐标系方向保持一致。   @Override    public booleanonTouchEven

2017-09-05 15:11:59 2164

原创 触摸[3] 滑动

【参考链接】 跟前面的拖动不一样比如说有一个自定义ViewGroup,当手指在这个ViewGroup中移动的时候,能够滑动ViewGroup中的内容。这里为了跟后面的连贯,主要介绍使用scrollTo()/scrollBy()来实现的方式。 此外,Android还定义了系统所能够识别出的被认为是滑动的最小距离。当手指在屏幕上滑动的时候,如果两次滑动之间的距离小于这个常量,那

2017-09-05 15:09:37 2374

原创 触摸[2] 拖动

【参考链接】 以如下应用场景为例,在FrameLayout中有一个MyTextView,当手指在MyTextView上触摸时,MyTextView随着手指而移动。主要是事件处理结合《View的长宽及其在父ViewGroup中的位置,如何改变?》中的方法来使用 此外,如果该View设置了onClickListener,则在手指离开屏幕ACTION_UP以后还会触发onClickL

2017-09-05 15:03:38 2173

原创 触摸[1] MotionEvent

【参考链接】 当手指在屏幕上滑动的时候,可以通过MotionEvent对象获取到触摸点的坐标getX()、getY():是触摸点相对于当前View左上角点的距离getRawX()、getRawY():是触摸点相对于屏幕左上角点的距离。 注意这个值就是相对于当前View的,我们并不需要关心View和ViewGroup的情况。即使ViewGroup有scroll,借用《触摸

2017-09-05 15:02:06 2178

空空如也

空空如也

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

TA关注的人

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