自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 问答 (4)
  • 收藏
  • 关注

原创 【RecyclerView & ItemTouchHelper】给RecyclerView设置padding后,拖拽移动item出现问题

首先,把功能正常的代码贴上val itemTouchHelper = ItemTouchHelper(object: ItemTouchHelper.Callback(){ override fun getMovementFlags(recyclerView: RecyclerView, viewHolder:RecyclerView.ViewHolder): Int{ val dragFlag = ItemTouchHelper.UP | ItemTouchHelper

2021-02-20 15:30:37 489 1

原创 ContentProvider的使用

ContentProvider的使用访问其他应用的ContentProvider通过Context类获取ContentResolver类才能对对ContentProvider进行数据访问查询//在Context下直接getContentResolver()获取contentResolver = getContentResolver()val uri = Uri.parse(content://com.example.myapplication.provider/table1)val curso

2020-11-05 15:38:06 168

原创 SQLite数据库的基本使用与笔记

SQLite数据库的使用1.创建数据库class MyDatabaseHelper(val context : Context, name : String, version : Int) : SQLiteOpenHelper(context, name, null, version) { private val createBook = "create table Book("+ " id integer primary key autoincrement,"+ "author t

2020-11-05 10:09:03 161

转载 TabLayout+ViewPager+Fragment实现导航栏页面

TabLayout+ViewPager+Fragment实现导航栏页面1. 创建Fragment类和Fragment布局文件在这里把你需要的Fragment类创建好来这里需要重写Fragment的onCreateView方法(将fragment布局文件加载进来)public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflate

2020-10-29 10:14:14 2100

转载 设计原则总结

设计原则一.单一职责原则单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。单一职责原则要求:一个接口或类只有一个原因引起变化,也就是一个接口或类只有一个职责,它就负责一件事情。单一职责原则的好处:类的复杂性降低,实现什么职责都有清晰明确的定义;可读性提高,复杂性降低,那当然可读性提高了;可维护...

2019-08-29 16:45:46 276

转载 UML类图学习

类图类结构在类的UML图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称、属性和方法。类举例:public class User{ public String name; protected int age; private String email; public String getName(){ re...

2019-08-23 11:14:51 180

原创 ANR的起因,定位以及解决方法

ANR概述ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。当出现ANR时,都是调用到AMS.appNotResponding()...

2019-08-22 17:16:39 394

原创 关于java重写Override和重载Overload

方法签名:方法名和参数返回值不算作方法签名但如果出现一样的方法签名但返回值不同的两个方法,jvm会报错子类可以重写父类的方法public class Person{ public void run(int a){ System.out.println("Person run"); }}public class John extends Person{...

2019-08-22 09:28:07 161

转载 Java抽象类与接口的区别和理解

Java抽象类与接口的理解abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface 选择显得...

2019-08-21 14:32:59 189

原创 MAT检测模拟内存泄露

MAT检测模拟内存泄露名词解释:MAT(Memory Analyze Tool):顾名思义,MAT就是内存分析工具。是一个快速且功能丰富的堆转储分析软件,它可以帮助你找到内存泄露和分析高内存消耗问题。内存溢出(OOM):即Out of Memory。内存溢出是指APP向系统申请超过最大阀值的内存请求,系统不会再分配多余的空间,就会造成OOM error。内存泄露(memory leak):...

2019-08-20 17:59:29 218

转载 代码动态添加View

Android代码中动态添加View进行android开发的大部分view都是在layout配置文件中添加,而有些时候也需要在代码中动态添加,这篇博文就是针对用代码实现添加view,下面就动态添加一个button为例。一些要点DecorView 是android 界面的顶级View ,当前界面的整个即为DecorView。DecorView为FrameLayout,而DecorView 一般...

2019-08-19 16:26:19 295

原创 接口的定义应用

Android回调函数的编写从一开始接触接口时总觉得它与抽象类非常像,但这篇博文主要是针对Android里面一个很重要的应用——方法回调,给用户提供一个接口,而用户可利用这个接口在程序执行的特定时间点执行指定的动作。本次演示的是视频播放第一帧的回调。一.在何处定义设置interface要注意此时接口是提供给用户使用的,或者说提供给编程人员使用,提供给他们在Activity中使用,我们应该把...

2019-08-19 11:04:02 137

原创 Android视频编码(surface)

Android视频编码视频编码要用的Encoder,这里使用的是以surface来代替buffer,要用到OpenGL相关知识,下图是其大概的过程decoder与encoder之间是surface的存在,用surface来代替input/output buffer,优点是opengl会帮我们把复杂的细节完成,可以认为是 OpenGL管理纹理,返回的是纹理的ID,而我们操作的也是这个ID,返回...

2019-08-07 14:41:38 820

原创 使用MediaMuxer裁剪视频

MediaPlayer的使用使用MediaMuxer裁剪视频1.解封装,获取不同tracks上的format2.配置MediaMuxer3.向MediaMuxer中写入数据4.释放资源使用MediaMuxer裁剪视频剪辑的过程大概是,先把封装格式的视频文件通过MediaExtractor进行解封装操作,分出不同的tracks,然后针对不同的tracks进行seekTo到我们需要开始裁剪的地方,...

2019-08-06 17:19:09 1207 2

转载 Android logcat日志查看

Android 日志命令格式[adb] logcat [<option>] ... [<filter-spec>] ...logcat命令参数参数描述-b <buffer>加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main-c清除缓冲区中全部日志并退出-d将缓冲区的log转存到屏幕中然后...

2019-07-24 16:17:46 3032

转载 GIt的学习

Git的学习一.安装gitsudo apt-get install git二.创建版本库1.选择一个合适的位置创建一个空文件$ mkdir learngit$ cd learngit$ pwd/home/wanzhizheng/learngit2.通过git init命令把这个目录变成Git可以管理的仓库:$ git initInitialized empty Git r...

2019-07-23 15:12:33 338

原创 使用MediaExtractor , MediaCodec对音视频的解码实现简单播放器

使用MediaExtractor , MediaCodec对音视频的解码实现简单播放器在上一篇博文中记录了Android音视频的可以直接使用MediaPlayer对音视频进行处理播放,了解播放音乐和视频所用的一些接口,同时搭配SeekBar,VideoView,SurfaceView等可实现一个简单的播放器。而这篇文章主要是深入到MediaPlayer里面具体的实现,先来回顾一下音视频播放的原...

2019-07-19 15:31:29 2774

转载 MediaPlayer的使用

MediaPlayer的使用MediaPlayer的使用(2019.07.16)1.视频播放器的原理2.Android系统自带的MediaPlay状态机详解(MediaPlay的生命周期)如何使用MediaPlayer播放音频与视频(一 )播放音频(二)播放视频(1)VideoView的使用(2)SurfaceView的使用MediaPlayer的使用(2019.07.16)本此总结主要内容的...

2019-07-19 10:12:37 19041

空空如也

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

TA关注的人

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