- 博客(57)
- 资源 (1)
- 收藏
- 关注
原创 Draw
一、绘图坐标系 在画布(canvas)上有个绘图坐标系,取出时,绘图坐标系的原点在左上角。如果调用canvas.traslate(50, 50)移动后,那么原点就会发生改变,变成(50, 50)。...
2019-04-19 13:24:09
1976
原创 Paint之Xfermode
Xfermode通过图片的组合模式,达到我们想要的效果。例如:刮刮卡。1、Xfermode的设置步骤 目标图像--》设置Xfermode模式--》源图像--》设置Xfermode模式为null(默认模式)。Xfermode只会对之后设置的图像有影响2、Xfermode的16种模式参考:https://www.jianshu.com/p/713584d018fc...
2019-04-18 23:15:14
221
原创 requesLayout、invalidate、postInvalidate刷新View
requesLayout:会刷新整个视图树,导致整个视图重新mesure、layout、drawinvalidate:只会使当前view的重绘(draw),在UI线程中重绘postInvalidate:只会使当前view的重绘(draw),在非UI线程中重绘如下图所示:参考:https://blog.youkuaiyun.com/a553181867/article/details/...
2019-04-11 10:31:11
137
原创 Butterknife的使用
一、配置 在工程的build.gradle中进行如下的配置classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1' 在module的build.gradle中进行如下的配置apply plugin: 'com.jakewharton.butterknife implementa...
2019-04-10 16:22:40
118
原创 Java后台开发中乱码的转换
public class RequestServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String admin = req.get...
2019-03-18 21:18:34
3252
原创 Servlet的生命周期
1、生命周期实例化、init,service,destroy当多个用户访问该Servlet的时候,只会在Tomcat中初始化一次该Servlet。有几个用户就会调用几次service,也就是开启几个线程。Servlet是多线程的。destroy的调用是在Tomcat关闭或者代码发生改变重新加载的时候2、Servlet在web.xml中的配置 <servlet>...
2019-03-18 16:58:43
141
原创 在Tomcat部署项目
一、静态部署1、将Java工程目录下的WebContent目录拷贝到Tomcat安装目录下的webapps目录中,但是最好把WebContent改成其他名字(有缺点,会把分区占用完)2、在server.xml中的host标签下进行配置,配置完成后要重新启动Tomcat。配置如下<Cotext path="/wm" docBase="D:/WebDemo" reloadable=“...
2019-03-18 10:37:49
192
原创 Tomcat启动与添加角色到用户名为“tomcat”下
一、Tomcat的启动打开Tomcat的安装目录下的bin文件夹、然后点击Startup.bat二、Tomcat添加角色1)打开Tomcat界面,输入localhost:端口号进行打开2)点击manager app3)点击manager app后,这时候会弹出一个弹出框,点击取消4)在Tomacat安装目录下的Conf文件夹下有个文件tomcat-users.xml,把以下...
2019-03-16 11:53:23
445
原创 Tomcat安装目录的介绍
Bin:可执行文件存放文件夹,Tomcat的启动程序就放在该目录下Conf:存放配置文件Lib:存放一些第三方jar包,应用程序共享Logs:存放Tomcat运行过程中的日志文件Temp:存放一些临时文件。例如使用Tomcat上传文件,那么可能会保存一些上传的临时文件Webapps:web应用程存放的地方Works:Tomcat的工作目录。例如jsp会把生成的Servlet...
2019-03-16 11:16:53
624
原创 MySQL的安装
安装注意事项:选择自定义安装、记住端口号、记住root密码安装是否成功的判断:打开cmd 进入安装目录的bin文件夹,如下命令:cdC:\Program Files\MySQL\MySQL Server 5.7\bin然后输入命令mysql -u root -p出现以上提示说明安装成功...
2019-03-15 20:28:48
121
原创 地图
1、高德地图在使用自定义InfoWindow时,在getInfoWindow方法中引用的布局中,如果有ImageView,那么它的大小是30X30时,会出现问题,在50X50时,就不会有问题
2018-07-30 15:00:44
132
转载 Android事件传递机制分析
一、Android最基本的屏幕操控事件down:按下事件。move:移动事件。up:离开事件。二、在总结的事件传递机制时,先介绍一下ViewGroup与View有关事件传递的方法ViewGroup有dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent方法 View有dispatchTouchEvent、onTouchEvent方法dispatc...
2018-03-04 21:41:22
291
原创 Android dp转换成px,px转换成dp
public class DensityUtil { /** * dp 转成px */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density;
2018-01-19 11:07:32
693
原创 Android设置全屏与去掉默认的标题
1、在Style中去掉标题与设置全屏在AndroidManifrst.xml中会引入一个AppTheme样式,如下代码所示 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name"
2017-12-28 18:29:09
239
原创 C++中的线程同步问题
1、创建线程 pthread_create(pthread_t* __pthread_ptr, pthread_attr_t const* __attr, void* (*__start_routine)(void*), void*) 第一个参数:线程的引用 第二个参数:线程的属性 第三个参数:线程执行的方法 第四个参数:线程传递给线程执行方法的参数
2017-12-08 16:31:33
277
转载 Android手机卡顿原因
一、什么是VSYNC VSYNC是啥?他就是一个信号源。假设你的屏幕是60FPS的话,那意味着,每隔1s,那么屏幕就有60次中断信号产生,即,每隔16.666ms,就会有一次中断信号产生。这个能干嘛用呢?对于屏幕来说,它无非就是每次来一个中断信号,就刷新一下屏幕。如果这个中断信号发出后,没有刷新屏幕,就会丢帧,造成屏幕卡顿现象。 在Android 4.
2017-12-05 17:58:37
821
原创 CMake.txt文件说明
1、在Linux系统中的静态库与动态库 库以二进制文件的形式保存, 后缀是.a的是静态库,后缀是.so的是动态库。 静态库在打包成lib.a文件的时候,把代码都加载到内存中;动态库在打包成lib.so文件的时候,是打包成两个.so文件,目标lib.so文件存放的是函数的索引, 另一个so存放的是函数的实现。 在CMake.txt文件中,SHARE是指
2017-11-22 17:14:24
321
原创 SimpleDateFormat需要sdk最低版本号为24的问题
之所以会出现这样的问题是因为导入的包的问题,我导入的包为“android.icu.text.SimpleDateFormat”,这个是在sdk版本24之后出现的,应改成Java提供法的包,为“java.text.SimpleDateFormat”。
2017-10-25 10:41:06
933
原创 Android Studio 2.2 在已有项目中添加NDK
1、加载库与编写native方法2、在Terminal命令窗口下进入到java文件夹,执行如下命令:javah 包名.类名,生成头文件。3、在项目的main文件夹下新建一个cpp文件夹,然后新建一个cpp文件,这个文件名要与代码System.loadLibrary("patch")中的参数名称相同。在这里我把文件名定为patch4、把在第二步中生成的头
2017-07-16 18:28:25
2338
转载 Android坐标系和视图坐标系
Android坐标系的理解直接关系到后面你Android进阶部分的学习,如果没有夯实的基础,你自定义View时就会有种欲求不满,欲罢不能——想搞懂却又觉得难,想放弃又觉得舍不得。Android中的坐标系以及获取坐标的方法 Android中有两种坐标系,分别称之为Android坐标系和视图坐标系。而对应的也有一些相关的方法可以获取坐标系中的坐标值。只有搞清楚这些区别,才能在实现的
2017-07-07 15:22:16
330
原创 Activity反转后,Activity的生命周期的变化
Activity在反转后,会导致前一个Activity的销毁,会生成一个全新的Activity,生命周期为:onPause--->onStop--->onDestroy--->onCreate--->onStart--->onResume.
2017-07-01 15:20:33
200
原创 C++中的命名空间(using name std)
C++把标准库中的类、方法与变量等放在命名空间std中,所以为了避免我们声明的类、方法与变量等与库中的相冲突,所以我们在写C++代码时,也使用了命名空间std。
2017-06-23 17:48:34
845
转载 String、Stringbuffer与Stringbuilder的区别
1、在执行速度上:Stringbuilder->Stringbuffer->String2、String是字符串常量 Stringbuffer是字符串变量 Stringbuilder是字符串变量 有可能我们会疑惑String怎么是字符串变量。看以下代码: String str = adc; str = str + “ef”
2017-06-22 15:03:43
12446
原创 Java接口使用心得
1.假如有一个类A,一个借接口B。类A实现了接口B,类A的引用为a,类B的变量是B,那么可以使用b = (B)a的到一个接口B的引用
2017-06-12 12:48:52
468
原创 Android环境搭建(Eclipse)
1.安装JDK2.安装Eclipse 3.安装ADT。在Eclipse中安装插件可以直接把插件的解压文件夹复制到Eclipse安装目录中的dropins文件夹下,这些文件夹可以与dropins文件夹隔着一个文件夹,也可以不隔。4.把本地的Android SDK关联到Eclipse上,或者自行下载
2017-05-30 16:25:06
255
原创 Android Studio JUnit单元测试
在Android Studio 2.2版本上,不需要在AndroidManifest.xml进行任何的配置。在创建项目的时候已经把JUnit单元测试使用到的依赖包写进了build.gradle中,并在build.gradle中进行了如下的配置 defaultConfig { applicationId "com.example.administrator.junitdemo_1"
2016-12-27 16:28:47
544
转载 Android 内存分析工具MAT(中)
1.资源对象没关闭造成的内存泄露 资源性文件对象(如Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于Java虚拟机内,还存在于虚拟机外,如SQLiteCursor(在析构函数finalize(),如果我们没有关闭它,它自己会调用close()关闭),如果我们没有关闭它,系统会在回收它时也会
2016-01-06 16:12:03
332
转载 Android 内存分析工具MAT(下)
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defin
2016-01-06 15:46:51
282
原创 android private libraries、android dependences与reference libraries的区别
android private libraries :添加在libs下的第三方包会自动添加到这里。android dependences :右键项目——properties——andriod 底下的is library勾选并添加的包都会在这里面。reference libraries:右键通过bulid path的第三方包都会在这里面。(项目下新建lib文件夹或者任意,把第三方包放在这里)
2015-12-25 09:34:34
378
原创 AlertDialog居中问题
注意:是先显示出来dialog,即show()出来,才能再设置宽高属性,这才能让AlertDialog居中,或者不指定布局文件父View的宽度与高度,代码如下所示:AlertDialog dialog = new AlertDialog.Builder(this).create();dialog.show();WindowManager.Layout
2015-12-17 11:42:04
2599
原创 Android 内存分析工具MAT(上)
不过MAT这类工具可以帮助你更好的对memory进行分析。使用MAT之前有2个概念是要掌握的:Shallow heap和Retained heap。Shallow heap表示对象本身所占内存大小,一个内存大小100bytes的对象Shallow heap就是100bytes。Retained heap表示通过回收这一个对象总共能回收的内存,比方说一个100bytes的对象还直接或者间接地持有
2015-11-20 17:41:08
377
转载 Android 垃圾回收器(GC)
GC_XXX表明是哪类GC以及触发GC的原因。几种GC类型:- GC_CONCURRENT:这是因为你的heap内存占用开始往上涨了,为了避免heap内存满了而触发执行的。- GC_FOR_MALLOC:这是由于concurrent gc没有及时执行完而你的应用又需要分配更多的内存,内存要满了,这个时候不得不停下来进行malloc gc。- GC_EXTERNAL_ALLOC:这是为e
2015-11-20 17:21:48
601
原创 Android Bitmap的使用
Bitmap对象占用的内存,需要使用recycle()函数来表明该内存可回收,不然占用的内存只能使用finalizer。finalizer并不可靠,再次就是如果不调用recycle()需要回收Native Memory中的内存的话会导致一次完整的GC,GC执行的时候会暂停整个应用,程序被分配的内存越大,GC的时间越长。
2015-11-20 17:09:20
273
转载 Android内存优化大全(下)
1、BraodcastReceiver,ContentObserver,FileObserver,Cursor在Activity onDeatory或者某类声明周期结束之后一定要unregister或者close掉,否则这个Activity类会被system强引用,不会被内存回收。2、 不要直接对Activity进行直接引用作为成员变量,如果不得不这么做,请用private WeakRe
2015-11-20 09:04:21
410
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人