自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

轻风起自远东

文能提笔抄答案,武能路霸钩核弹

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

原创 NDK开发之函数无返回值导致的crash

NDK开发之函数无返回值导致的crash最近在学习FFmpeg,遇到了一个莫名其妙的native crash,堆栈解析出来是在这么一行:起初以为是我使用FFmpeg的方式有问题导致了av_read_frame的crash,最后查了半天也没发现哪里调错了,最后突然看到我好像没有加return 0,于是加上去试了下,然后就不崩溃了。。。AS对于NDK的代码错误提示的支持太弱了,这种明显的错误竟然...

2020-01-18 18:04:21 663

原创 使用回调接口解决匿名实现Runnable导致的内存泄漏问题

使用回调接口解决匿名实现Runnable内存泄漏的问题在Android开发中经常会看到这样的代码:public class MyActivity extends Activity { ... new Thread(new Runnable() { @Override public void run() { //具体...

2018-07-24 21:45:25 4618 5

原创 图片/视频混合选择器的简单实现

仿抖音图片/视频混合选择器功能介绍搜索所有视频和图片并混合显示,视频在右下角显示时长,点击时右上角显示当前为第几个选中的图片/视频,取消时补位。 这个选择器是基于RecyclerView来实现的 下面介绍关键类QueryProcessorQueryProcessor是用于异步查询所有图片/视频的类public class QueryProcessor { ...

2018-07-22 21:25:12 685

原创 Android 8.0 常见bug

java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation最近在做一个即时IM通讯的app,在Android8.0版本运行app的时候发现总是crash,logcat里面的问题也是一大串,没办法只好一行一行的看,而且logcat还在一直不停的刷新,真是头大,最后一个一个er...

2018-05-11 14:24:08 1166

原创 Android中的多线程

Android多线程机制由于讨论的主要是Android中特有的线程机制和类,因此在此不会再详谈Java中的线程类Thread和Runnable。 Android中可以扮演线程的角色有很多,AsyncTask、IntentService和HandlerThread,AsyncTask的底层实际上就是一个线程池,IntentService的底层实际上就是HandlerThread和Handler...

2018-05-10 18:10:21 212

原创 Android消息机制

Android消息机制参考书籍:《Android开发艺术探索——任玉刚》消息机制概述Android的消息机制主要指的是Handler的运行机制,Handler的运行又需要MessageQueue和Looper的支撑,因此本博客将分别谈到ThreadLocal、MessageQueue、Looper和Handler的底层运行机制。首先了解一下Android消息机制涉及到的几个类:...

2018-05-08 20:37:56 197

原创 浅谈Java虚拟机

本博客基于《深入理解Java虚拟机——JVM高级特性与最佳实践》——周志明前言终于拿到了众多知乎大佬推荐的JVM神书,可以开始学习Java虚拟机的相关知识了,以前学Java的时候一直都听到很多相关词汇,GC、HotSpot、新生代、老年代、堆、栈、双亲委派模型,但一直没有机会去认真看一看JVM相关的书籍,这段时间实习,正好可以好好看看JVM的书,也将学到的知识总结于此,由于博主只是一名...

2018-03-29 22:39:31 465

原创 浅谈Activity启动过程

浅谈Activity启动过程本篇博客参考资料: 探索7.x源码, 全面解析Activity启动框架 (1) 《Android开发艺术探索》——任玉刚在日常的开发中,我们通常使用startActivity(Intent intent)来启动一个新的Activity,我们能够如此简单的启动一个Activity要归功于Android开发团队完美的封装,屏蔽了Activity启动的底层细节,但...

2018-03-20 23:44:36 206

原创 Android Binder机制

本篇博客参考资料: 《Android开发艺术探索》——任玉刚 简单明了,彻底地理解BinderBinder是Android一个非常重要的类,它实现了IBinder接口。从IPC角度来说,Binder是Android中的一种跨进程通信方式;从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、Windo...

2018-03-19 21:20:37 248

原创 Java算法与数据结构

为了提前准备今年的秋招,差不多开始复习算法与数据结构了,以前学算法的时候是以C语言为基础的,现在很久没碰C语言了,决定这次复习用Java实现,基本上是参考的Java算法神书:《数据结构与算法分析——Java语言描述》。排序时间复杂度O(n2)的排序选择排序首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然...

2018-03-18 21:00:55 1285 1

原创 Java设计模式

单例模式本段借鉴于:【Java】设计模式:深入理解单例模式什么是单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局接口。考虑这样一个应用,读取配置文件的内容。很多应用项目,都有与应用相关的配置文件,这些配置文件很多是由项目开发人员自定义的,在里面定义一些应用重要的参数数据。当然,在实际的项目中,这种配置文件多数采用 xml 格式,也有采用 properties 格...

2018-03-17 12:15:20 343

原创 Android多进程通信之AIDL

跨进程开启、停止、绑定、解绑Service在上一节(Android Service)的学习中我们知道在同一个进程中,不同组件(例如Activity和Service)之间通过IBinder接口进行通信,但是不同进程里的组件是不能通过IBinder进行通信的,为了让不同进程里的组件能够通信我们需要使用到AIDL。在学习AIDL之前,我们先了解一下如何跨进程开启、停止、绑定、解绑Service。...

2018-03-11 23:41:24 283

原创 Android Service

Service的生命周期Service是Android四大组件之一,它通常用来实现需要在后台进行耗时操作的需求,它的生命周期如下: 可以看到Service的生命周期分成了两条线,左边这条是使用startService()方法启动Service后走的生命周期,右边这条是使用onBind()方法绑定Service后走的生命周期,下面我们先来学习使用startService()的情况下Serv...

2018-03-11 00:23:54 211

原创 Android自定义View

如何自定义控件自定义属性的声明和获取测量onMeasure:测量自定义控件的尺寸绘制onDraw:绘制自定义控件状态的存储与恢复:在Activity进入后台时,我们需要保存自定义控件的重要状态;当Activity从后台恢复时,我们就可以恢复自定义控件的重要状态,例如文本内容等。自定义属性的声明和获取总共分成四步:分析需要的自定义属性在res/values/attrs.xm...

2018-03-08 22:28:40 207

原创 Android动画详解

一、逐帧动画逐帧动画就是将一张一张的图片逐帧播放以达到动画效果,在Android里面实现帧动画非常简单。右键点击drawable文件,选择Drawable Resource File,输入名称loading,点击确定,完成如下代码:<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:androi...

2018-03-03 18:55:32 371

原创 JSTL和EL表达式

1、EL表达式EL表达式介绍:Expression Language (表达式语言),目的是替代JSP页面中的复杂代码EL表达式语法:${变量名}下面通过一个实例来了解EL表达式的用法:我们首先在一个JSP页面(1.jsp)中定义一个表单,其中有用户名和年龄两个输入框,表单数据会通过request对象提交到一个Servlet(ELServlet)<!--1.jsp-...

2018-03-02 14:58:10 292

原创 微信小程序零碎知识点

1、在wxml中只有用text标签包裹的文本才能在手机上长按选中2、小程序的自适应单位是rpx,一般情况下不要使用px3、每一个页面都是一个文件夹,下面的wxml、wxss、json、js文件最好和文件夹名称一致,这样在app.json中配置页面的时候只需一行即可例如有一个welcome欢迎页面,那么我们如下操作: 在app.json中配置时,只需要一行即可完成这个页面的...

2018-02-19 15:46:25 1221

原创 Java Web零碎知识点及常见问题

1、表单中有文件上传项时,不能用常用的request.getParameter()获取表单中的值此时需要使用第三方jar包fileupload包和io包里面相关的类来完成对于表单值的获取,jar包的下载地址:https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgihttps://commo...

2018-02-14 19:40:39 284

原创 Servlet基础知识

一、什么是Servlet 实际上JSP的底层就是Servlet,但是JSP是嵌在HTML页面中的Java程序段,而Servlet是纯Java程序。 Servlet主要用于业务逻辑处理,Jsp用于展示内容。二、第一段Servlet程序1、新建一个Java Web项目,在src文件夹下新建一个类LoginServlet,并使其继承自HttpServlet类,重写类下的doGet和doP...

2018-02-13 14:19:03 270

原创 使用SAX解析器读写XML文档

一、JAXPJAXP概述JAXP作用JAXP提供的与解析XML相关的类二、使用SAX解析器解析XML文档SAX采用事件机制的方式来解析XML文档,这是一种快速读写XML数据的方式 使用SAX解析器解析XML文档流程 JAXP为SAX解析器提供两组API,一般情况下用第二组API SAX解析事件SAXParser解析XML文档的方法S...

2018-02-13 11:11:03 569

原创 JSP基础知识

一、什么是JSP 二、Eclipse下动态Web项目的结构三、JSP程序的执行过程 用户首先向服务器发起访问jsp文件的请求,web容器读取jsp文件后,生成对应的java文件(准确的说是Servlet源文件),web容器再将java文件编译成class文件,最后由web容器加载编译后的class文件并执行,把执行结果相应给客户端。四、JSP基本语法 1、声明语法...

2018-02-08 15:26:41 443

原创 IntelliJ IDEA JSP文件不提示内置对象的解决方案

出现这个问题的原因是没有添加Apache Tomcat的lib依赖 解决方法打开project structure->Libraries点击加号->找到apche tomcat文件夹下的lib目录,添加进来即可。

2018-02-07 15:42:57 2320 2

原创 IntelliJ IDEA创建Web项目的步骤

第一步: 第二步: 第三步: 第四步:配置运行时环境——Tomcat服务器 第五步: 第六步: 第七步:按下OK后,可以在右上角看到MyTomcat运行时环境已经配置成功 第八步:参照我的上一篇博客进行WEB-INF文件夹的配置第九步:配置成功后,按下右上角绿色的三角形运行按钮运行Web项目 IntelliJ IDEA自动帮我们打开了Chrome

2018-02-06 15:21:11 529

原创 IntelliJ idea 2017创建Web项目后web文件夹下没有WEB-INF的解决方法

使用idea创建一个Web项目后发现并没有网上教程所说的web文件夹下有WEB-INF文件夹以及web.xml,查看刘荣星的博客后找到了答案。 老版本: 新版本: 解决办法:Ctrl+Shift+Alt+S快捷键进入Project structure(项目结构)管理的界面选择左边菜单栏里的Facet,点击后能看到有Deployment Descriptors的输入框展开左侧

2018-02-06 13:57:37 41087 14

原创 HTML/CSS/JS实现二级菜单导航+轮播图

学习了HTML、CSS和JavaScript后,总得做点东西练练手,于是干脆跟着效果做了个类似于慕课网的轮播效果,配上一个二级菜单导航,具体效果如下: 首先来说说这个项目中用的比较多的知识点:CSS定位——绝对定位和相对定位的搭配使用,用的非常多JavaScript——实现三秒换图、按下按钮换图、按下小圆点换图、鼠标移动到主菜单上即显示二级菜单等功能div块标签首先是整个页面

2018-02-05 15:57:22 19572 6

原创 初学者使用cocos creator制作第一个小游戏

最近微信小游戏开始萌芽,根据老师的要求开始学习cocos creator紧跟互联网的潮流,先是花了几天大概学了学HTML/CSS/Javascript,之后就直接开始看cocos creator的官方文档,看了两三天总算是根据教程一步一步的做了官方提供的第一个小游戏,官方文档上给的第一个小游戏制作过程确实是比较详细的,但是它没有对用到的每个api做详细的解释,估计目的是让初学者大概了解一下一个小游

2018-01-28 13:10:47 16680 9

原创 Javascript基础知识(一)

由于之前学过Java,因此Javascript中和Java相同的特性及用法在此我会略过。一、Javascript输出html lang="en">head> meta charset="UTF-8"> title>js输出title>head>body> p id="one">p> script type="text/javascript">

2018-01-22 18:28:16 261

原创 HTML/CSS基础知识实战

前一段时间学了HTML和CSS的知识,今天有时间赶紧将学到的知识综合起来写个好看的界面。整体 界面效果如下: 整体分为头部、中部、底部,需要使用到例如浮动、浮动的清除、遮罩层、水平垂直居中等基础知识。html lang="en"> head> meta charset="UTF-8"> title>Titletitle>

2018-01-22 13:03:58 350

原创 CSS基础知识(四)——定位

CSS position 属性 通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式。 position 属性值的含义: static 元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。 relative 元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。 abs

2018-01-19 18:18:01 279

原创 CSS基础知识(三)——浮动float

浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。 float属性一共有四个参数:left(左浮动)、right(右浮动)、none(不浮动)、inherit(继承父元素的浮动属性)html lang="en">head> meta charset="UTF-8">

2018-01-17 18:40:38 567

原创 CSS基础知识(二)

CSS为我们提供了很多的样式属性,例如背景的background、边框的border、文本的font等等等等,这些属性为我们美化html界面提供了良好的接口和适用性。一、背景样式 在下面这段代码,将p1的背景颜色设置为了lightcoral;p2的高和宽设置为200px,背景为图片;p3 的背景也为图片,但是通过background-position设置了图片显示的起始位置,64px

2018-01-17 13:54:15 256

原创 CSS基础知识(一)

层叠样式表 (Cascading Style Sheets,缩写为CSS), 是一种样式表语言,用来描述HTML或XML(包括如 SVG、XHTML之类的XML分支语言)文档的呈现。CSS 描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。总而言之,CSS解决了HTML在不同的浏览器上被渲染成不同样式的问题。CSS规则由两个主要的部分构成:选择器,以及一条或多条声明,当有多条声明

2018-01-15 19:35:23 409

原创 HTML的学习之路(一)

一、HTML初识元素/标签及其语法 开始标签里的属性代表标签内容的一些特性,如颜色、大小、链接等。<br>标签比较特殊,它是单独存在的,表示换行。 一个html文档的结构如上图所示,具体代码如下:<!--文档版本声明--><!DOCTYPE html><!--html标签--><html> <!--head标签--> <head> <meta chars

2017-11-09 15:05:56 267

原创 ViewPager+Fragment+ListView重新加载后数据源重复问题的解决方法

今天在项目中遇到了一个问题,我的主页Activity是以ViewPager+Fragment进行构建的,其中有两个Fragment又包含了ListView,正常情况下这两个Fragment的界面如下: 但是当我从主页Activity跳转到另一个Activity,之后再返回主页Activity时,发现第一个包含ListView的Fragment的界面变成了下面这样: 很明显这是ListVi

2017-09-23 15:26:14 3040 1

原创 修改Android自带Switch样式

由于Android自带的Switch样式不能应用于所有UI风格的App,因此修改Switch样式是项目中经常要用到的技术,Switch的样式一般来说需要修改以下部分:按钮(thumb)、轨迹(track)以及大小。首先我们经过尝试可以发现,如果我们直接在布局文件中修改Switch的属性layout_width和layout_height是无法修改Switch的真实大小的,相反只能改变这个Switch

2017-09-11 16:49:39 13615 1

原创 Android弹出Window提示框(基于Android6.0)

在项目中经常会需要应用弹出一些自定义的窗口,这时候Android自带的系统Dialog就无法满足我们的需求了,为了满足项目需求,我们可以使用Window来满足这一需求。首先我们新建一个项目,来到MainActivity的布局文件,在这里新建一个按钮用于弹出Window<LinearLayout xmlns:android="http://schemas.android.com/apk/res

2017-08-27 13:09:49 3531

原创 Android自定义Dialog

首先我们新建一个自定义Dialog类CustomDialog,并让这个类继承自Dialog类public class CustomDialog extends Dialog{ //构造方法 public CustomDialog(Context context,int width,int height,int layout,int style,int gravity,int ani

2017-08-23 11:18:27 304

原创 Android之在服务中的Window的关闭方法(利用事件分发)

在智能管家App项目的开发过程中有一个这样的功能,在服务中写一个窗口,之后这个窗口需要通过Back键关闭,但是由于窗口是在服务Service中的,显然我们无法像在Activity中通过回调onBackPressed()方法来关闭窗口,因此在网上查阅了事件分发的相关资料和刘某人程序员的博客后,总算学习到了如何解决该问题。http://blog.csdn.net/qq_26787115/article/

2017-08-02 14:28:52 1779

转载 Android继承AppCompatActivity实现全屏设置

Android studio创建新项目后Activity默认继承的是AppCompatActivity。 在使用自己创建的style的时候,如果没有设置parent=”xxx”,其中xxx是appcompat相关的属性,那么在运行的时候就会报错。所以要在使用的style里面继承相关属性:例如: <style name="xxx" parent="Theme.AppCompat.NoActionB

2017-07-12 14:11:55 617

转载 Android中通过Typeface设置自定义字体

Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace”,除此之外还可以使用其他字体文件(*.ttf)方法一:XML中使用android默认字体<!-- 使用默认的sans字体--> <TextView Android:id="@+id/sans" Android:text="Hello,Wor

2017-07-12 12:55:37 575

空空如也

空空如也

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

TA关注的人

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