自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 ListView数据只有显示不全bug

Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小。解决的办法有如下两种:解决方案1:直接把包含ListView控件的ScrollView控件从布局文件中去除,留下ListView控件,这是最简单快捷的解决办法,如果一定要在ScrollView中包含ListView,则参考解决方案

2016-09-30 11:14:40 2309

转载 《JAVA与模式》之调停者模式

调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。为什么需要调停者  如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(

2016-09-28 15:17:05 597

转载 动态代理模式的Java实现

动态代理(Dynamic Proxy):相比前一篇文章所实现的静态代理,动态代理具有更强的灵活性,因为它不用在我们设计实现的时候就指定某一个代理类来代理哪一个被代理对象,我们可以把这种指定延迟到程序运行时由JVM来实现。 我们知道,所谓代理,就是需要代理类和被代理类有相同的对外接口或者说成服务,所以代理类一般都必须实现了所有被代理类已实现的接口,因为接口就是制定了一系列对外服务的标

2016-09-28 14:14:40 284

转载 java设计模式—工厂模式

一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式在《Java与模式》中分为三类:1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式(Factory Method):又称为多形性工厂;3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产

2016-09-25 14:26:51 238

转载 【MVVM】Data Binding代码实践(告别findViewById)(四)

Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点:1、使用MVVM模式,让整个项目结构清晰明了 2、通过ViewModel连接View和Model,使得View与Model层解耦,分层后各司其职,维护方便 3、易于项

2016-09-22 18:14:18 407

转载 【MVVM】Data Binding高级用法-Observable、动态生成Binding Class(三)

设置View的id虽然说Data Binding这种分层模式使得我们对数据的传递简单明了,一般情况下我们可以不设置View的id,不使用findViewById即可对View进行数据上一系列的操作,不过有时候根据情况我们需要对某些View设置id,但是还是可以不findViewById即可得到该控件的对象,因为设置id后ViewDataBinding类会自动生成对应的控件对象,如:la

2016-09-22 18:13:10 1315

转载 【MVVM】 Android Data Binding语法解析(二)

上篇我们知道了Data Binding的最简单的用法,那么Data Binding其中最为重要也是最复杂的其实就是在xml布局文件中给对应的控件进行数据绑定了,接下来就一一说明Data Binding的使用各个场景的语法。我们以User类这个Model为例:public class User { private String userName; private St

2016-09-22 17:57:27 397

转载 【MVVM】Android Data Binding实战(一)

在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可以轻松实现MVVM(模型-视图-视图模型)模式,来实现应用之间数据与视图的分离、视图与业务逻辑的分离、数据与业务逻辑的分离,从而达到低耦合、可重用性、易测试性等好处,那么我们首先先来看看什么是MVVM

2016-09-22 17:48:38 347

转载 使用Android Studio手把手教你将应用打包+代码混淆

最近几天用Google的Design库写了个App,使用Android Studio将app打包时遇到的几个瓶颈,所以把详细步骤写入下来。AS中怎么获取应用签名这和eclipse不同,eclipse中可以直接在软件内部查找到,而AS则需要通过命令行形式拿到,具体先进入.android目录下,如图: AS将应用打包AS版本1.3,步骤都以截图为示例:A

2016-09-21 18:06:13 2254

转载 插件化开发—动态加载技术加载已安装和未安装的apk

首先引入一个概念,动态加载技术是什么?为什么要引入动态加载?它有什么好处呢?首先要明白这几个问题,我们先从应用程序入手,大家都知道在Android App中,一个应用程序dex文件的方法数最大不能超过65536个,否则,你的app将出异常了,那么如果越大的项目那肯定超过了,像美团、支付宝等都是使用动态加载技术,支付宝在去年的一个技术分享类会议上就推崇让应用程序插件化,而美团

2016-09-21 17:50:33 1297

原创 有关minSdkVersion和targetSdkVersion

只要手机当前版本满足minSdk都可以进行安装,假设4.4手机安装5.0targetSdk的apk,依然可以进行安装只是没有一些5.0效果,如果不做兼容性判断处理会导致报错,v4包就有部分向下兼容的控件。比如4.4和以上的侵入式状态栏写法不一样,就需要判断版本。1举一个例子:假如你想给你的app加入大量的手势操作(sdk 7才引入的),然而这些手势操作可以被Button啊或menu等代替,

2016-09-20 16:18:03 559

转载 C++命名空间的解释

使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。在C++中,变量、函数和类都是大量存在的。如果没有命名空间,这些变量、函数、类的名称将都存在于全局命名空间中,会导致很多冲突。比如,如果我们在自己的程序中定义了一个函数toupper(),这将重写标准库中的toupper()函数,这是因为这两个函数都是位于全局命名空间中的。命名冲突还会发生在一个程序中使用两个或者更多的第三方库的情况中。

2016-09-18 23:48:32 274

转载 ViewPager切换动画PageTransformer的使用

Android从3.0开始添加了属性动画后,诸多难以实现的动画都可以轻松解决了,v4包下的ViewPager控件当然也不例外,相对于非常平庸的默认切换动画,Google官方给我们展示了两个动画例子:DepthPageTransformer和ZoomOutPageTransformer,比较炫。实际上我们也可以通过实现ViewPager.PageTransformer接口来做出完全不同的切换

2016-09-18 15:42:13 484

原创 ScrollView嵌套listview滑动位置底部bug

三种方案,个人推荐第三种:1 sv.fullScroll(ScrollView.FOCUS_UP);2 sv.setScrollY(0);3 sv.smoothScrollTo(0,20);滑动冲突解决listView:public class ListViewForScrollView extends ListView { public ListViewFor

2016-09-13 16:38:03 989

原创 【总结】安卓进阶方向讨论

1.Java基础很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。那么Java学到什么程度才算是过关呢?长沙极客营认为至少要掌握以下两个方面的内容:a) Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部

2016-09-12 15:30:20 867

原创 @SuppressLint("NewApi")和@TargetApi()的区别

在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告,解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()。那他们之间有什么区别呢,很简单,@SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的andr

2016-09-12 14:15:43 774

转载 OpenCV4 --Android 环境配置【详细教程】

要想在Android使用OpenCV,那么首先得搭建好开发环境,其实搭建开发环境并不难,只要理解其中的原理就自然手到擒来。开发环境搭建好后才能大展拳脚!(之前一直是在VS中使用OpenCV,VS中的配置很简单;在Android中配置OpenCV对于刚开始接触Android和java的人来说,确实很麻烦;刚开始配置时参考的是这位大牛的文章:opencv for android 教程(环境

2016-09-12 10:40:50 1909 1

转载 Android Studio + NDK

准备工作操作步骤新建Android工程申明native方法新建jni文件夹设置javah工具新建C源文件新建Androidmk文件新建Applicationmk文件设置ndk-build工具生成so文件修改gradle文件运行结果本文将介绍在Android Studio中使用NDK的一种简便的方法,先给出一些参考:官方文档Android NDK and

2016-09-12 10:36:15 368

转载 C/C++中extern关键字详解

1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。      也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而

2016-09-11 18:35:07 262

转载 [雷神] =总结=视音频编解码技术零基础学习方法

一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没能完成。今天有着很大的空闲,终于可以总结一个有关视音频技术的入门教程,可以方便更多的人学习从零开始学习视音频技术。需要注意的是,本文所说的视音频技术,指的是理论层面的视音频技术,并不涉及到编程相关的东西。 0.     生活中的视音频技术平时我们打开电脑中自己存电影的目录的话,一般都会如下图所示,一大堆五花

2016-09-09 13:48:37 1794 1

转载 [雷神]图解FFMPEG打开媒体的函数avformat_open_input

=====================================================FFmpeg的库函数源代码分析文章列表:【架构图】FFmpeg源代码结构图 -解码FFmpeg源代码结构图 -编码【通用】FFmpeg源代码简单分析:av_register_all()FFmpeg源代码简单分析:avcodec_register_al

2016-09-08 23:33:28 1112

转载 [雷神]最简单的基于FFmpeg的移动端例子:Android 视频转码器

=====================================================最简单的基于FFmpeg的移动端例子系列文章列表:最简单的基于FFmpeg的移动端例子:Android HelloWorld最简单的基于FFmpeg的移动端例子:Android 视频解码器最简单的基于FFmpeg的移动端例子:Android 视频解码器-单个库版最简单的基于

2016-09-08 23:32:32 1933

转载 ffmpeg常用基本命令

1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4

2016-09-08 14:21:54 518

空空如也

空空如也

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

TA关注的人

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