自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android studio编译libjpeg-turbo-2.0.0

前言项目上jni里用了libjpeg-turbo-1.5.0,在优化项目时猜测这个库有点“老”了,就产生了编译最新版本的库,然后下了虚拟机装了ubuntu,ubuntu上又装了各种工具,看文档BUILD.md也是各种懵逼,原来文档上说的命令都是要写到.sh脚本下的,然后在执行sh脚本。当你去寻找so库时会发现,so库生成在libjpeg-turbo-2.0.0文件夹下,而且文件夹下还有很多源码...

2018-08-10 19:12:20 2183 2

翻译 Rxjava2基础

1、简介RxJava: Reactive Extensions for the JVM Rxjava : JVM的响应式扩展。RxJava是响应式扩展的Java VM实现:通过使用可观察序列组合异步和基于事件的程序的库。 它扩展了observer模式以支持数据/事件序列,并添加了操作符,允许您以声明的方式将序列组合在一起,同时抽象出对底层线程、同步、线程安全性和并发数据结构等方面的关注...

2018-07-17 16:33:29 654

原创 代理设计模式

前言: 网上有那么多写设计模式的博客为什么还要写设计模式呢?因为我不会,而且如果只是看看别人写的往往自己理解的很浅,需通过自己写一写加深影响。一、什么是代理模式 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。二、代理模式的组成 抽象角色:通过接口或抽象...

2018-06-30 17:10:08 193

原创 单例模式

一、什么是单例模式单例就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。二、单例的特点1、单例只能有一个实例。2、单例类必须创建自己的唯一实例。3、单例类必须向其他类提供这一实例。三、单例的实现1、懒汉式 class DBDao{ private static DBDao dbDaoInstance ; ...

2018-06-30 10:58:41 187

原创 Android 仿高德地图可拉伸的BottomSheet

项目上要用到类似高德地图搜索结果后的结果展示的可拉伸控件。由于没有找到合适的软件,制作的效果有点差,将就看下。自己的效果: 虽然说效果没有高德的好(就是在下滑的时候不能准确折叠到中间),但是基本满足了项目的需要。如果各位大神有更好的方法,欢迎留言提供方法。刚开始以为这是抽屉效果(slidingdrawer),结果发现这个类已经被谷歌抛弃,且content也不能滑动,得自定义控件实现。但是我的自定义

2017-11-11 18:52:31 10418 3

原创 工作中遇到的问题总结

1、编译项目时, 突然抛出异常 INSTALL_FAILED_INVALID_APK: Split lib_slice_1_apk was defined multiple times。解决方法:禁用InstantRun 修复该问题 。ps: InstantRun在使用中出现问题比较多,我觉得还是禁用比较好。2、out of memory increment xmx 。解决方法:http://w

2017-09-30 18:27:02 804

原创 Android 自定义控件 ---DecorativeListView

项目上有个仿地图上楼层切换的控件,虽然不是太熟悉。但是,百度百度还是有一些好的例子。我也好久没写博客了,就把这个控件封装好了,放在了我的GitHub。控件可以实现的功能:设置ListView显示的条目个数。设置ListView的数据和选中的条目。获得条目点击的回调。废话不多说,先来张效果图:原理:这个控件由两张图片和一个ListView组成,我们将他们添加到一个线性布局中即可实现。这么简单,

2017-09-23 01:10:25 673 1

原创 C#程序初了解

最简单的C#程序——HelloWorld。 以下几点值得注意: 1.C# 是大小写敏感的。 2.所有的语句和表达式必须以分号(;)结尾。 3.程序的执行从 Main 方法开始。 4.与 Java 不同的是,文件名可以不同于类的名称。创建C#项目: 打开Visual Studio2017:文件-新建-项目,选择模板下的Visual C#,然后选择 控制台应用 。标识符标识符是用来识别类

2017-06-08 13:53:15 366

原创 android中的shape属性

在android自带的控件中如按钮,输入框都不如ios的控件好看,我们一般都会仿照ios的控件的效果。只需在drawable目录下新建一个xml文件,修改控件的样式。如button_shape.xml<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/an

2017-03-20 18:00:44 391

转载 ANDROID CollapsingToolbarLayout

CollapsingToolbarLayout是用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠(其实就是看起来像伸缩~)的App Bar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View。CollapsingToolbarLayout主要包括几个功能(参照了官方网站上内容,略加自己的理解进行解释): (1) 折叠Tit

2017-03-06 16:14:39 366

转载 ANDROID AppBarLayout

AppBarLayout继承自LinearLayout,布局方向为垂直方向。所以你可以把它当成垂直布局的LinearLayout来使用。AppBarLayout是在LinearLayou上加了一些材料设计的概念,它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。请注意:上面提到的某个可滚动View,可以理解为某个ScrollView。怎么理解上面的话呢?就是说,

2017-03-06 15:43:26 471

原创 ANDROID Toolbar

Toobar主要是用来替换ActionBar的,换句话说,ActionBar能做的,Toolbar都能做。如果你对ActionBar的使用比较熟悉,你会发现Toolbar使用起来非常简单。既然是替换,当然用Toolbar的时候就得先去把ActionBar给隐藏掉.隐藏ActionBar的方法有很多,可以通过代码的方式隐藏,也可以通过配置文件的方式,我们主要是通过配置文件的方式来隐藏。在我们的styl

2017-03-06 14:35:34 358

转载 NavigationView和FloatingActionButton的使用

转载自http://www.cnblogs.com/JohnTsai/p/5172056.html正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图。 通过学习官方文档,我们知道NavigationView继承自FrameLayout。一般用于应用的导航菜单,菜单的内容来自于menu文件。NavigationView通常放置在

2017-03-01 17:29:58 1513

原创 Google下拉刷新控件SwipeRefreshLayout

SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。通过源码我们可以知道SwipeRefreshLayout继承了ViewGroup。 SwipRefreshLayout中存在一个接口,通过此接口我们可以监听滑动手势,其实使用此组件最重要的步骤就是实现此接口的onRefresh方法,在此方法中实现数据的更新操作。 swipeRefres

2017-02-19 11:40:43 261

转载 Android中 Bitmap和Drawable相互转换的方法

1.Drawable—>BitmapResources res=getResources();Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.sample_0); Resources res=getResources(); private byte[] Bitmap2Bytes(Bitmap bm){2.Bitmap—->Drawa

2017-02-15 17:49:37 454

原创 安卓6.0系统权限申请android.permission.WRITE_SETTINGS

app用到了调整系统亮度的功能,在清单文件中添加了android.permission.WRITE_SETTINGS权限,但运行在6.0系统一直报错:java.lang.SecurityException: so.wih.android.jjewatch was not granted this permission: android.permission.WRITE_SETTINGS.解决方法如

2017-02-09 15:04:07 25993 4

转载 Android Studio使用Lint进行代码检查

Android Studio作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中存在的问题,让我们更有规范性的开发App。它可以检查出:xml文件中是否存在hardcode硬编码、unused resources没有使用到的资源、probable bug可能的bug等等。Android Lint的使用找到Analyze目录下的Inspect Cod

2017-02-08 18:19:16 482

原创 android 格式化本地时间

简单易用格式化本地时间的方法: DateFormat dateInstance = getDateInstance(); DateFormat dateTimeInstance = getDateTimeInstance(); DateFormat timeInstance = getTimeInstance(); String s1 =

2017-02-08 17:51:14 972

原创 Android滑动退出---SwipeBackLayout

我们的项目用到了滑动退出Activity,但是,在有的Activity中又处理了onTouch事件,导致了事件冲突,在网上搜到了SwipeBackLayout项目,使用后发现效果非常好! 项目地址:https://github.com/ikew0ng/SwipeBackLayout 这是一个中国开发者贡献的开源项目。 使用: 1.Moudle:app下添加依赖。dependencies {

2017-01-04 18:06:00 1028

转载 Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。 大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。 这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。 如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?通过Context.getExternalFilesDir()方法可以获取到 SDC

2016-12-30 20:42:17 520 1

原创 Android解决异常: startRecording() called on an uninitialized AudioRecord.

今天使用AudioRecord进行录音操作时候,报了下面的异常。E/AndroidRuntime(22775): Java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.解决办法: 1.看权限是否添加;<uses-permission android:name="android

2016-12-26 09:32:15 11337

转载 is 32-bit instead of 64-bit动态库错误分析

前段时间因项目需要,需要MP3格式的录音,需要引用LAME开源库,在引用so库文件时,提示Java.lang.UnsatisfiedLinkError: dlopen failed: “liblame.so” is 32-bit instead of 64-bit错误,网上分析了出现这种情况的原因,可能是混合使用了32bit和64bit的库文件,如果系统先使用64bit的库文件时,则后续的库文件都是

2016-12-23 20:12:40 20763 4

转载 Android application详解与用法

1:Application是什么?Application和Activity,Service一样,是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在man

2016-12-20 15:40:53 385

翻译 Android 自定义view(画表盘)

自定义View就是继承一个View的子孙类或View类,然后重写其中的一些方法来完成界面的美观效果。 效果: 布局: <so.wih.android.myview.MyLayout android:layout_width="wrap_content" android:layout_height="wrap_content" />代码:pub

2016-12-20 14:28:26 580

原创 android SQLite的使用

Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。1、要使用Android SQLite必须要继承一个类——SQLiteOpenHelper。public class MySQ

2016-12-19 15:51:42 246

原创 SQL 常用命令

1.操作数据库1.1 查看存在的库、定义信息、正在使用和切换数据库的命令a.查看数据库服务器已有的数据库: show databases;b.查看数据库的定义信息: show create database 数据库名称;c.切换/连接数据库 use 数据库名称;d.查看当前连接的数据库: select database();1.2数据库的创建语法:create databas

2016-12-17 21:32:11 1181

原创 RecyclerView的使用

Android 5.0新增一个控件RecyclerView,它是对ListView的升级。每当一个新的事物出来,我们就应该了解下,下面说说它的用法。1.在Module 下的build.gradle下添加依赖。dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.

2016-12-14 19:13:07 308

原创 Android 5.0 的主题

android 5.0 版本更新,带来很多新的主体,想在低版本使用就要使用兼容包。google官方,以及一些大牛,给我们提供了一些程序来兼容5.0之前的版本: 'com.android.support:appcompat-v7:22.+', // 这个包是为了考虑API level 7(即Android 2.1)及以上版本而设计的,v7里默认包含了v4包,v7支持了Action Bar以及一些The

2016-12-12 20:57:35 314

转载 Android 5.0十大新特性

距离Android系统上一次重大更新不到一年的时间,谷歌再一次从KitKat升级到了Lollipop,而两次都使用糖果来命名,营销的目的显露无 遗。当我们首次看到Android 5.0 Lollipop这个名字的时候,就已经意识到这将是Android系统有史以来变化最大的一次升级。首先,在感官界面设计上,我们彻底迎来了Android系统的扁平化时代,新的系统不仅使用了新的配色,同时看起来也很时尚。未

2016-12-12 19:40:00 354

转载 Android WebView的使用

WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。webview有两个方法:setWebChromeClient 和 setWebClientsetWebClient:主要处理解析,渲染网页等浏览器做的事情setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等 WebViewClient就是帮助WebVi

2016-12-12 19:30:58 273

转载 Android开发,使用Wifi调试真机

转载自:http://blog.csdn.net/listeners_gao/article/details/51485669 首先还是用USB线连接手机,然后找到Android SDK的playform-tools目录,在此通过命令行运行: adb tcpip 5555。在UBUNTU系统中,会返回“restarting in TCP mode port:5555”。接下来,设置手机连接

2016-12-08 10:22:35 265

翻译 ActionBar的简单使用

ActionBar介绍在API22之前我们使用标题栏基本都是在ActionBarActivity的Activity中处理的,而API22之后,谷歌遗弃了ActionBarActivity,推荐我们也可以说是强制我们使用AppCompatActivity。 ActionBar是位于Activity顶部,用于显示Activity的图标,标题,以及菜单的。可用于导航等功能,广泛应用于View的交互。Ac

2016-12-07 19:58:16 309

原创 Dagger2的简单使用

Dagger2的优点 * 没有使用反射,图的验证、配置和预先设置都在编译的时候执行 * 容易调试,完全具体地调用提供和创建的堆栈 * 更高的性能,谷歌声称他们提高了13%的处理性能 * 代码混淆,使用派遣方法,就如同自己写的代码一样第一步:在project/build.gradle 文件下添加 classpath ‘com.neenbedankt.gradl

2016-12-06 20:10:31 269

原创 开源框架----ButterKnife的使用

ButterKnife是一款强大的依赖注入框架,而且可以一键找到控件。 github上的地址:https://github.com/JakeWharton/butterknife 在android studio中使用: 第一步:在Project的build.gradle的dependencies下添加classpath ‘com.neenbedankt.gradle.plugins:andro

2016-12-05 18:29:43 313

原创 android wear-创建Notification

一、通过手机发送通知给android手表,首先需要将手机和手表模拟器建立连接。1.1 首先手机要下载android wear 中国版。 1.2 通过usb连接手机,打开android wear ,并且选择模拟器。 1.3 在命令行输入adb -d forward tcp:5601 tcp:5601 即可建立连接。二、mobile下通过Notification Builder创建Notificat

2016-11-10 19:39:26 308

原创 Android Wear 开发-创建第一个卡片

最近老板要做android手表,我也是第一次接触android手表,一脸茫然,不知道从何下手,android wear API 看的让我更是茫然,原谅我的英语水平不好,在网上找了很多资料,看的更是困惑,只能慢慢尝试。Context StreamAPI 的开始就介绍了Context Stream,我认为它是android wear设计的基础。Context Stream是一个卡片的垂直列表,每一个显示

2016-11-09 17:11:30 581

转载 使用git提交代码到github

转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/46738929 本文出自:【海龙的博客】第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令git init第二步:将项目的所有文件添加到仓库中git add .如果想添加某个特定的文件,只需把.换成特定的文件名即可第三步:将add的文件commi

2016-11-01 16:11:50 758

转载 git命令

Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。 1) 工作目录:用户本地的目录; 2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索

2016-11-01 15:49:18 230

原创 ScrollBy & ScrollTo

ScrollBy和ScrollTo都是view的方法,二者有很大的不同。1.public void scrollBy(int x, int y) ; 它是移动view的内容,它其实调用了ScrollTo方法。 源码: public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); }

2016-11-01 10:58:55 285

原创 手势解析工具类-GestureDetector

当我们在需要重写onTouchEvent(MotionEvent event)方法,处理MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP事件,记录位置等,大家写的代码大多是相同的,所以谷歌给我们封装了一个手势解析类-GestureDetector。1.创建手势解析工具类GestureDetector mGest

2016-10-31 14:58:56 285 2

空空如也

空空如也

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

TA关注的人

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