自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ricky

Just try,don't be shy~

  • 博客(62)
  • 资源 (7)
  • 收藏
  • 关注

原创 WebView没有检测到session的问题

解决步骤:1.登录接口缓存对应的session值// 伪代码:Headers headers = response.headers();List<String> cookies = headers.values("Set-Cookie");String session = cookies.get(0).toString();CacheUtils.setCache("sess...

2018-10-01 19:44:46 1948

原创 AsyncTask源码解析

本文通过非常通俗易懂的的描述来对AsyncTask扫盲所有关于AsyncTask应该掌握的知识点:AsyncTask的源码只有400行左右,所以不需要虚,通过源码来解释AsyncTask的使用会带来什么样的坑。正文:AsyncTask是线程池和Handler的封装。 关于线程池,AsyncTask内置有两个线程池: THREAD_POOL_EXECUTOR(ThreadPoolExecut

2018-05-04 00:48:21 508

原创 Android长图文截图的实现(支持截取微博,知乎,头条等第三方app)

源码:https://github.com/zengfw/LongScreenShot支持截取微博、知乎、今日头条等第三方APP……先瞅瞅效果图: 再瞅瞅最终的长截图:我是长截图一,瞅瞅嘛…我是长截图二,再瞅一下嘛…上一周脑子突然冒出长截图这个功能,想着如何截取如微博,知乎,头条等这些第三方APP的界面呢?出于好奇心,花了一周业余时间,撸一个看看。不就是截屏+拼图,还...

2018-04-15 14:05:18 4308 1

原创 JNI实现图片压缩

项目链接:https://github.com/zengfw/EffectiveBitmap结果预览: jni_278KB.pngquality_484KB.pngsample_199KB.pngsize_238KB.png 结论:原图大小5.99M~~ 我们把所有经过压缩的图片放到同等大小的情况后,很明显,采样压缩跟尺寸压缩都不是我们...

2018-04-13 02:12:04 1075

原创 自定义控件被忽略的渲染性能

渲染性能Android UI的工作分两阶段:1.在UI线程Record View#draw 2.在RenderThread线程DrawFrame(RenderThread:使用GPU资源的线程) 第一阶段随着View的invalidated在draw(Canvas)中进行 第二阶段native RenderThread基于Record View#draw步骤所产生的数据内容而进行...

2018-03-03 02:56:50 1037

原创 Android Development — Some of the best practices

Use Static Final For Constants (static 15%-20% faster)RecyclerView (replaces ListView and GridView)Don’t use a database unless you really need toYou can think about realm it’s really awesome!RxJava

2017-03-13 11:31:14 375

转载 Gradle多渠道打包、配置签名信息

多渠道打包国内有太多Android App市场,每次发版几十个渠道包。还好Android Gradle给我们提供了productFlavors,我们可以对生成的APK包进行定制。productFlavors {//多渠道打包 xiaomi { applicationId 'com.wuxiaolong.gradle4android1' } googlepaly

2017-02-17 16:13:11 874

转载 Gradle全局变量设置、自定义BuildConfig

全局设置如果有很多项目,可以设置全局来统一管理版本号或依赖库,根目录下build.gradle下:ext { compileSdkVersion = 23 buildToolsVersion = "23.0.2" minSdkVersion = 14 targetSdkVersion = 23}app/build.gradleandroid { compil

2017-02-17 16:07:53 25304

翻译 Android API Guide for Media Apps(九)——媒体会话的回调(Media Session Callbacks)

Media Session Callbacks一旦是视频app在同一个activity中运行媒体会话和媒体控制器,媒体会话回调的实现与音频应用server/client 架构实现的回调不同。由于没有服务的调用,所以notification都是由NotificationManager来控制的。下面的列表展示两种回调函数中不同的控制方式。 _ onPlay() onPause() onS

2017-02-06 09:21:17 614

翻译 Android API Guide for Media Apps(八)——构建一个视频播放器Activity(Building a Video Player Activity)

构建一个视频播放器Activity(Building a Video Player Activity)当activity收到生命周期onCreate()方法的回调时它应该实现这些步骤:创建并初始化媒体会话设置媒体会话的回调创建并初始化媒体控制器onCreate()的示例代码步骤如下:MediaSessionCompat mMediaSession;PlaybackStateCompat.B

2017-02-06 09:17:14 581

翻译 Android API Guide for Media Apps(七)——构建一个视频应用(Building a Video App)

构建一个视频应用(Building a Video App)通常视频播放器总在运行期间显示它的控件和视频内容,它不能在后台或在没有UI的界面上操作。因此,适当的构建你的应用作为单独的activity,其中这个activity包含UI,一个播放器,一个媒体会话以及一个媒体控制器。构建一个媒体播放器Activity(Building a Video Player Activity)  如何创建一个包含媒

2017-02-06 09:14:55 657

翻译 Android API Guide for Media Apps(六)——媒体会话的回调(Media Session Callbacks)

Media Session Callbacks媒体会话回调调用不同的接口方法来控制播放器,管理音频焦点,并实现媒体会话和媒体浏览器服务间的通信。下面的列表总结这些任务如何分布在回调中。 _ onPlay() onPause() onStop() Audio Focus requestFocus() passing in your OnAudioFocusChangeListen

2017-02-06 09:11:40 1811

翻译 Android API Guide for Media Apps(五)——构建媒体浏览客户端(Building a Media Browser Client)

构建媒体浏览客户端(Building a Media Browser Client)为了完成client/server的设计,你必须构建一个包含UI代码,关联MediaController和MediaBrowser的activity组件。MediaBrowser实现两个重要的功能:连接MediaBrowserService,并连接上后创建UI的MediaController。连接MediaBrows

2017-02-06 08:55:32 3646

翻译 Android API Guide for Media Apps(四)—— 构建媒体浏览器服务(Building a Media Browser Service)

构建媒体浏览器服务(Building a Media Browser Service)你的应用必须在清单文件中使用一个intent-filter声明MediaBrowserService 。你可以选择自己的服务名字,在下面的例子中,它叫“MediaPlaybackService”。<service android:name=".MediaPlaybackService"> <intent-filt

2017-02-06 08:49:14 4441

翻译 Android API Guide for Media Apps(三)—— 构建音频应用(Building an Audio App)

构建一个音频应用(Building an Audio App)音频应用的首选架构设计就是 client/server 设计。播放器和它的媒体会话都在MediaBrowserService中实现,Android activity的用户界面和媒体控制器则在MediaBrowser中实现。MediaBrowserService提供了两个主要的功能。当你使用 MediaBrowserService时,其他组

2017-02-04 17:05:26 962

翻译 Android API Guide for Media Apps(二)——媒体会话的使用(Working with a Mession)

Working with a Media Session媒体会话与其管理的播放器并存。你应该在activity或service的onCreate()方法中创建并初始化媒体会话,并持有媒体会话和它关联的播放器对象。 Note:编写媒体应用最好的实战就是使用media-compat library。本文的“media session”表示MediaSessionCompat的实例,“media co

2017-02-03 21:02:51 946

翻译 Android API Guide for Media Apps(一)——概览(Overview)

Media Apps Overview播放器和用户界面(Player and UI)一个播放音频或视频的多媒体应用程序通常有两部分:一个将数字媒体作为视频或音频呈现的播放器。一个带有传输控件的UI来运行播放器并选择性地显示播放器的状态。在Android中你可以从0开始构建你自己的播放器,或者你可以从以下两种方式选择一种实现:MediaPlayer类为播放器的架构提供了基本的功能,这些功能支持

2017-02-03 20:49:14 1117

翻译 Android API Guide for Media Apps —— 媒体应用

Media Apps这部分介绍如何将媒体播放器app分为一个媒体控制器(用户界面控件)和一个媒体会话(实际播放器)。本章节还描述了两种媒体app架构:client/server设计架构,它们能够很好作用于音频app上和拥有单一activity的视频播放器上。这部分还展示如何让媒体app响应硬件控件以及与其他使用音频输出流的app协作。媒体应用概述(Media Apps Overview)  介绍媒体

2017-02-03 20:36:00 753

翻译 Detecting camera features with Camera2

使用Camera2检测相机功能(Detecting camera features with Camera2)原文链接:https://medium.com/google-developers/detecting-camera-features-with-camera2-61675bb7d1bf#.ks8l788lx我手机的相机有它自己的特性。它有闪光灯,连拍,甚至有内置的降噪点。开发者可以使用这些

2017-01-07 00:56:13 1072

翻译 Android API Guide for Media and Camera(五)—— 媒体与相机(Camera API)

Camera API原文链接:https://developer.android.google.cn/guide/topics/media/camera.htmlAndroid框架支持各种相机和设备上可用的相机功能,它们可以让你在应用程序中捕获图片、音频。本文讨论一种快捷、简单的方式来捕获图片和音频以及概述一种为用户创建自定义相机体验的高级方法。 提示:本文所描述的Camera类已弃用。我们推荐

2017-01-05 19:33:40 1413

翻译 Android API Guide for Media and Camera(四)—— 媒体与相机(媒体路由)

Media Routing当用户使用无线技术连接他们的电视,家庭影院系统或音乐播放器时,他们是希望能够在这些更大,更响的设备上播放Android应用程序中的内容的。启用这类播放功能可将你的单一设备,单一用户应用转化为令人喜爱和兴奋的多个用户共享体验。Android设计的媒体路由器API通过常用的接口来实现远程接收器设备上媒体的显示和播放。APP开发者通过实现MediaRouter接口连接路由框架,并

2016-12-26 00:07:08 401

翻译 Android API Guide for Media and Camera(三)—— 媒体与相机(ExoPlayer)

ExoPlayerAndroid框架提供MediaPlayer作为一个以最少代码快速解决媒体播放的方案,以及为编译自定义媒体播放器提供了 MediaCodec 和MediaExtractor 类。ExoPlayer是一个开源项目,提供了基于这两个类的解决方案。它的播放器你可以修改并扩展。ExoPlayer支持MediaPlayer当前不支持的功能,包括通过HTTP的动态自适应流式传输(DASH),平

2016-12-25 21:11:31 595

翻译 Android API Guide for Media and Camera(二)—— 媒体与相机(媒体记录器)

MediaRecorderAndroid框架支持各种捕获和编码各种常见的音频和视频格式。你可以使用MediaRecorder APIs如果设备硬件支持的话。本文展示如何使用MediaRecorder编写一个从设备麦克风捕获音频,并保存和播放(使用MediaPlayer)的应用程序。为了记录视频,你需要通过MediaRecorder使用设备的相机。这里有相机指南的描述。 https://develo

2016-12-25 21:08:44 381

翻译 Android API Guide for Media and Camera(一)—— 媒体与相机(媒体播放器)

MediaPlayerAndroid多媒体框架支持播放各种常见的媒体类型,所以你可以很简单地集成视频,音频和图片到应用程序中。你可以播放来自存储在应用程序(raw资源),文件系统或网络数据流的音频或视频媒体文件。这些都可以使用MediaPlayer APIs。本文展示如何编写一个与用户交互的媒体播放应用程序,以及系统如何获取好的性能和用户体验。 Note:你只能回放音频数据到标准输出设备中。目前

2016-12-24 18:45:18 595

翻译 Android API Guide for Animation and Graphics(六)—— 动画与图形(OpenGL ES)

OpenGL ESAndroid包含支持高性能2D和3D图形绘制开源库(OpenGL),尤其是OpenGL ES API. OpenGL是一个跨平台的图形API,它为硬件处理3D图形指定了一个标准的软件接口。OpenGL ES是一种用于嵌入式设备的OpenGL规范。Android支持多个版本的OpenGL ES接口:OpenGL ES 1.0和1.1 - Android 1.0或更高版本所支持的A

2016-12-20 01:44:26 2035

翻译 Android API Guide for Animation and Graphics(五)—— 动画与图形(画布和可绘制对象)

画布和可绘制对象(Canvas and Drawables)Android框架接口提供了一组允许你自定义图形渲染到画布上或者修改已存在View对象外观的2D绘图接口。所以绘制2D图时,通常采用以下两种方式之一:a.将图形或者动画绘制到你布局中的一个视图对象上。这种方式,绘制的图形由系统的视图层次结构进程处理,你只需简单的将图形声明到视图对象中。b.直接在画布上绘制你的图形。这种方式,你需要自己适

2016-12-16 00:56:16 651

翻译 Android API Guide for Animation and Graphics(四)—— 动画与图形(帧动画)

帧动画帧动画通过加载一个一个Drawable资源文件来实现动画。这个典型的动画就像播放电影一样,按顺序播放不同的图片。AnimationDrawable类是帧动画的基类。你可以使用AnimationDrawable类在你的代码中声明一个帧动画,然而,通过一个单独的xml文件来实现帧动画更加简单。这种动画类型xml文件需要存放于Android项目的res/drawable/目录下。在xml布局中声明的

2016-12-13 01:04:17 404

翻译 Android API Guide for Animation and Graphics(三)—— 动画与图形(视图动画)

视图动画你可以在View控件上使用视图动画实现补间动画。补间动画通过使用诸如起点,终点,大小,旋转角度来运行动画。补间动画可以让View对象中的内容实现一系列简单的变换(变换位置、大小、旋转角度和透明度)。比如,你有一个TextView对象,你可以让它的文本移动,旋转,缩放。如果这个TextView有背景图片的话,它将随文本一起变换。animation package包提供了所有的补间动画的类。补间

2016-12-13 00:26:15 369

翻译 Android API Guide for Animation and Graphics(二)—— 动画与图形(属性动画)

属性动画属性动画系统是一个允许你让几乎所有对象都能有动画的鲁棒性架构。你可以定义一个随时间轴改变对象的属性,且无需对象是否已绘制好在屏幕上的动画。属性动画在指定时间内改变对象的属性的值。为了赋予对象动画,你需要指定一个对象的目标属性,比如对象在屏幕上的位置,以及它动画的时长,还有动画期间属性变化的值。属性动画系统定义了如下的特性:Duration:你可以指定动画的播放时长,默认是300ms。Ti

2016-12-09 00:05:25 445

翻译 Android API Guide for Animation and Graphics(一)—— 动画与图形(概述)

Animation and Graphics OverviewAndroid提供了许多应用于UI控件的动画、和绘制自定义2D和3D图形的接口。下面是这些系统功能的API的概述,它可以帮你找到最适合你所需的方法。AnimationAndroid framework提供了两种动画系统:属性动画和视图动画。两种动画系统都是可行的选择,但总的来说,更多的是使用属性动画,因为它更灵活且提供了更多灵活的特性。另

2016-12-07 22:48:26 460

原创 ViewPager#PageChangeListener#onPageScrolled三个参数

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

2016-12-07 09:13:00 5574

原创 UML类图小记

1.类图分三层:a) 第一层是类的名称,如果是抽象类,则就用斜体显示b) 第二层是类的特性:字段和属性c) 第三层是类的操作:方法2.类图的符号:a) ‘+’表示publicb) ‘-’表示privatec) ‘#’表示protected3.接口图的两种表示方法:a) 普通表示法 b) 棒棒糖表示法: 4.继承关系:空心三角形+实线。 5

2016-12-06 00:37:03 452

原创 Thinking in Java--并发篇

1.Thread,Runable的关系  2.Thread的生命周期,以及如何管理它。a) ExecutorService exec = Executors.newCachedThreadPool();b) ExecutorService exec = Executors.newFixedThreadPool();c) ExecutorService exec = Exec

2016-12-06 00:26:32 277

原创 那些相见恨晚的Android常识

记录Android开发过程中,遇到的一些小问题:1.Android代码中设置TextView的TextSize,总不能出现预期的大小,需要如下设置:mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);2.如果一个方法不需要使用该对象的成员,那么把该方法设置为static静态调用比对象调用该方法快15%-20%。

2016-11-04 23:58:59 561

原创 Git clone远程目录443:Timed out 问题

1.设置本地电脑的代理VPN2.设置Git工具的代理(命令如下:)$ git config --global http.proxy "localhost:1080"附图:PS:Git clone的文件如果没有指定的目录,则下载的文件在C://User/目录

2016-11-01 11:45:01 23275 1

翻译 [Developer Android] Processing Bitmaps Off the UI Thread

原文链接:https://developer.android.com/training/displaying-bitmaps/process-bitmap.html慢慢积累Google官方的文档,以后方便快速查阅。

2016-10-25 22:31:51 418

翻译 [Developer Android] Loading Large Bitmaps Efficiently

原文链接:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap慢慢积累Google官方的文档,以后方便快速查阅。更高效的加载并使用Bitmap对象1.首先获取Bitmap的尺寸与类型    BitmapFactory类根据不同图片资源类型提供了decode

2016-10-20 00:23:41 343

转载 #Effective Android# 警惕界面上的异步回调(No.2)

个人评论:真心不错的一篇文章,以后coding,以及写基础框架又多了一些考虑点。作者:范怀宇链接:https://zhuanlan.zhihu.com/p/20214237来源:知乎如果有人问我,Android 程序什么时候最容易出错?一个备选答案(额,这个备选集可能会有点长...):在界面开发中使用了异步回调。在任何程序开发中,异步操作的处理都是一个麻烦事,而

2016-10-17 23:09:26 324

原创 记录源码学习列表

记录看过的源码:1.PullToRefresh2.ImageLoader3.EventBus4.Android的Handler、Looper回调机制5.afinal 主要有四大模块:FinalActivity、 FinalDB、FinalBitmap、FinalHttp(PS:ORZ,公司竟然还在用这个。。算了,只能顺手摸摸源码)。学习点:5.1 FinalAc

2016-10-13 23:58:53 475

原创 Android Studio提升Gradle的构建

用过Android Studio搞大型项目的同学应该知道,构建一次的时间很长,我的项目快的需要4分钟左右,慢的时候要5-8分钟,不能忍...查了Android Developers官方,才知道了Android Plugin For Gradle 2.1 有一个能提升构建速度的特性。这面摘自官方:Added support for dexing-in-process which pe

2016-08-11 17:29:08 1681

仿网易界面

通过ListView+ViewPager来仿网易新闻的界面,一个不错的UI代码库

2015-03-02

安卓课程表源码

一个课程表的开发,很实用的android实战练习项目哦

2015-02-20

课程表的开发

一个开源的课程表项目,一个不错的android实践项目

2015-02-19

ListView结合使用CheckBox

通过该listview结合checkbox实现增删选择功能

2015-02-17

android应用访问服务器端

android访问服务器的HttpURLConnectoiin,HttpClient,开源框架android-async-http-master三种方式请求服务端

2015-01-26

Android通过ViewPager动态写引导页

通过添加一句代码,就能在增加一个引导页面的同时,添加指示点

2015-01-15

springMVC比较常见的配置以API

第一次在工作使用springmvc后,详细做了这方面的笔记,笔记的内容基本是工作的时候常见的类,还有一些配置问题。

2014-10-22

空空如也

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

TA关注的人

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