Android
文章平均质量分 64
u014011112
这个作者很懒,什么都没留下…
展开
-
Android API Guide for Media and Camera(一)—— 媒体与相机(媒体播放器)
MediaPlayerAndroid多媒体框架支持播放各种常见的媒体类型,所以你可以很简单地集成视频,音频和图片到应用程序中。你可以播放来自存储在应用程序(raw资源),文件系统或网络数据流的音频或视频媒体文件。这些都可以使用MediaPlayer APIs。本文展示如何编写一个与用户交互的媒体播放应用程序,以及系统如何获取好的性能和用户体验。 Note:你只能回放音频数据到标准输出设备中。目前翻译 2016-12-24 18:45:18 · 628 阅读 · 0 评论 -
Android API Guide for Animation and Graphics(四)—— 动画与图形(帧动画)
帧动画帧动画通过加载一个一个Drawable资源文件来实现动画。这个典型的动画就像播放电影一样,按顺序播放不同的图片。AnimationDrawable类是帧动画的基类。你可以使用AnimationDrawable类在你的代码中声明一个帧动画,然而,通过一个单独的xml文件来实现帧动画更加简单。这种动画类型xml文件需要存放于Android项目的res/drawable/目录下。在xml布局中声明的翻译 2016-12-13 01:04:17 · 455 阅读 · 0 评论 -
Android API Guide for Animation and Graphics(三)—— 动画与图形(视图动画)
视图动画你可以在View控件上使用视图动画实现补间动画。补间动画通过使用诸如起点,终点,大小,旋转角度来运行动画。补间动画可以让View对象中的内容实现一系列简单的变换(变换位置、大小、旋转角度和透明度)。比如,你有一个TextView对象,你可以让它的文本移动,旋转,缩放。如果这个TextView有背景图片的话,它将随文本一起变换。animation package包提供了所有的补间动画的类。补间翻译 2016-12-13 00:26:15 · 417 阅读 · 0 评论 -
Android API Guide for Animation and Graphics(二)—— 动画与图形(属性动画)
属性动画属性动画系统是一个允许你让几乎所有对象都能有动画的鲁棒性架构。你可以定义一个随时间轴改变对象的属性,且无需对象是否已绘制好在屏幕上的动画。属性动画在指定时间内改变对象的属性的值。为了赋予对象动画,你需要指定一个对象的目标属性,比如对象在屏幕上的位置,以及它动画的时长,还有动画期间属性变化的值。属性动画系统定义了如下的特性:Duration:你可以指定动画的播放时长,默认是300ms。Ti翻译 2016-12-09 00:05:25 · 483 阅读 · 0 评论 -
Android API Guide for Animation and Graphics(一)—— 动画与图形(概述)
Animation and Graphics OverviewAndroid提供了许多应用于UI控件的动画、和绘制自定义2D和3D图形的接口。下面是这些系统功能的API的概述,它可以帮你找到最适合你所需的方法。AnimationAndroid framework提供了两种动画系统:属性动画和视图动画。两种动画系统都是可行的选择,但总的来说,更多的是使用属性动画,因为它更灵活且提供了更多灵活的特性。另翻译 2016-12-07 22:48:26 · 497 阅读 · 0 评论 -
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 · 3699 阅读 · 0 评论 -
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 · 784 阅读 · 0 评论 -
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 · 997 阅读 · 0 评论 -
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 · 990 阅读 · 0 评论 -
Android API Guide for Media Apps(一)——概览(Overview)
Media Apps Overview播放器和用户界面(Player and UI)一个播放音频或视频的多媒体应用程序通常有两部分:一个将数字媒体作为视频或音频呈现的播放器。一个带有传输控件的UI来运行播放器并选择性地显示播放器的状态。在Android中你可以从0开始构建你自己的播放器,或者你可以从以下两种方式选择一种实现:MediaPlayer类为播放器的架构提供了基本的功能,这些功能支持翻译 2017-02-03 20:49:14 · 1149 阅读 · 0 评论 -
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 · 4570 阅读 · 0 评论 -
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 · 1116 阅读 · 0 评论 -
Android API Guide for Media and Camera(四)—— 媒体与相机(媒体路由)
Media Routing当用户使用无线技术连接他们的电视,家庭影院系统或音乐播放器时,他们是希望能够在这些更大,更响的设备上播放Android应用程序中的内容的。启用这类播放功能可将你的单一设备,单一用户应用转化为令人喜爱和兴奋的多个用户共享体验。Android设计的媒体路由器API通过常用的接口来实现远程接收器设备上媒体的显示和播放。APP开发者通过实现MediaRouter接口连接路由框架,并翻译 2016-12-26 00:07:08 · 432 阅读 · 0 评论 -
Android API Guide for Media and Camera(三)—— 媒体与相机(ExoPlayer)
ExoPlayerAndroid框架提供MediaPlayer作为一个以最少代码快速解决媒体播放的方案,以及为编译自定义媒体播放器提供了 MediaCodec 和MediaExtractor 类。ExoPlayer是一个开源项目,提供了基于这两个类的解决方案。它的播放器你可以修改并扩展。ExoPlayer支持MediaPlayer当前不支持的功能,包括通过HTTP的动态自适应流式传输(DASH),平翻译 2016-12-25 21:11:31 · 622 阅读 · 0 评论 -
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 · 1845 阅读 · 0 评论 -
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 · 684 阅读 · 0 评论 -
AsyncTask源码解析
本文通过非常通俗易懂的的描述来对AsyncTask扫盲所有关于AsyncTask应该掌握的知识点:AsyncTask的源码只有400行左右,所以不需要虚,通过源码来解释AsyncTask的使用会带来什么样的坑。正文:AsyncTask是线程池和Handler的封装。 关于线程池,AsyncTask内置有两个线程池: THREAD_POOL_EXECUTOR(ThreadPoolExecut原创 2018-05-04 00:48:21 · 538 阅读 · 0 评论 -
JNI实现图片压缩
项目链接:https://github.com/zengfw/EffectiveBitmap结果预览: jni_278KB.pngquality_484KB.pngsample_199KB.pngsize_238KB.png 结论:原图大小5.99M~~ 我们把所有经过压缩的图片放到同等大小的情况后,很明显,采样压缩跟尺寸压缩都不是我们...原创 2018-04-13 02:12:04 · 1103 阅读 · 0 评论 -
Android长图文截图的实现(支持截取微博,知乎,头条等第三方app)
源码:https://github.com/zengfw/LongScreenShot支持截取微博、知乎、今日头条等第三方APP……先瞅瞅效果图: 再瞅瞅最终的长截图:我是长截图一,瞅瞅嘛…我是长截图二,再瞅一下嘛…上一周脑子突然冒出长截图这个功能,想着如何截取如微博,知乎,头条等这些第三方APP的界面呢?出于好奇心,花了一周业余时间,撸一个看看。不就是截屏+拼图,还...原创 2018-04-15 14:05:18 · 4531 阅读 · 1 评论 -
自定义控件被忽略的渲染性能
渲染性能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 · 1090 阅读 · 0 评论 -
那些相见恨晚的Android常识
记录Android开发过程中,遇到的一些小问题:1.Android代码中设置TextView的TextSize,总不能出现预期的大小,需要如下设置:mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);2.如果一个方法不需要使用该对象的成员,那么把该方法设置为static静态调用比对象调用该方法快15%-20%。原创 2016-11-04 23:58:59 · 590 阅读 · 0 评论 -
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 · 412 阅读 · 0 评论 -
Gradle多渠道打包、配置签名信息
多渠道打包国内有太多Android App市场,每次发版几十个渠道包。还好Android Gradle给我们提供了productFlavors,我们可以对生成的APK包进行定制。productFlavors {//多渠道打包 xiaomi { applicationId 'com.wuxiaolong.gradle4android1' } googlepaly转载 2017-02-17 16:13:11 · 910 阅读 · 0 评论 -
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 · 25608 阅读 · 0 评论 -
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 · 1479 阅读 · 0 评论 -
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 · 651 阅读 · 0 评论 -
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 · 613 阅读 · 0 评论 -
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 · 2010 阅读 · 0 评论 -
Android API Guide for Media and Camera(二)—— 媒体与相机(媒体记录器)
MediaRecorderAndroid框架支持各种捕获和编码各种常见的音频和视频格式。你可以使用MediaRecorder APIs如果设备硬件支持的话。本文展示如何使用MediaRecorder编写一个从设备麦克风捕获音频,并保存和播放(使用MediaPlayer)的应用程序。为了记录视频,你需要通过MediaRecorder使用设备的相机。这里有相机指南的描述。 https://develo翻译 2016-12-25 21:08:44 · 414 阅读 · 0 评论 -
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 · 2112 阅读 · 0 评论 -
Android项目开发总结(一)-- 分包篇
今天看了Google官方对MVP开发模式的解释及Demo,发现MVP模式真心解决了以前所有后台任务丢在万能Activity的痛点。http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=403539764&idx=1&sn=d30d89e6848a8e13d4da0f5639100e5f#rd但是在看Google源码的时候,我想外国的程序员原创 2016-04-13 22:23:59 · 3559 阅读 · 0 评论 -
Android项目开发总结(二)-- 架构篇
非常有价值的项目架构经验总结:架构因人而异,不同的架构师大多会有不同的看法;架构也因项目而异,不同的项目需求不同,相应的架构也会不同。然而,有些东西还是通用的,是所有架构师都需要考虑的,也是所有项目都会有的需求,比如API如何设计?架构如何分层?开发环境和生产环境如何分离?这几年,我负责研发过的App,有餐饮类的、社交类的、智能家居类的、电商类的、新闻媒体类的等等。当有了一定的经验之后转载 2016-04-15 00:05:52 · 2122 阅读 · 0 评论 -
Android项目综合知识点(一)
1.ArrayAdapter的使用(看情况学下咯,毕竟BaseAdapter还是能满足大部分情况)这个BaseAdapter的子类很有用!不要开发了那么久只知道BaseAdapter(反正我是这种人)。当集合类条目较多,比如超过100条(敢一次性拉你试试看,你组长保证不砍你,因为一般都是分页加载的呐)或频繁动态增减item(反正之前有个listview里面的数据集经常需要改,所以写回调写得想s原创 2016-04-07 23:38:42 · 645 阅读 · 0 评论 -
Android项目开发总结(三)-- 规范篇
对命名的规范:1.Adapter的布局:list_item_XXX.xml2.Activity的布局:activity_XXX_layout.xml3.Fragment布局:fragment_XXX.xml4.基础类全部用:BaseXXX.java后续更新...原创 2016-05-12 11:37:33 · 532 阅读 · 0 评论 -
android获取设备屏幕大小的方法
// 通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);System.out.println("heigth : " + dm.heightPixels);System.out.println("width :原创 2016-05-17 15:50:49 · 502 阅读 · 0 评论 -
Android Studio查找有中文字符的文件位置
应对项目需求(多语言支持)。。。TM的巨坑,几千个地方我一个人改,无奈。Android Studio中,由于我是延用Eclipse的快捷搜索键,所以是用Ctrl + H。在Text to find:输入如下正则过滤出含中文字符的文件^((?!(\*|//)).)+[\u4e00-\u9fa5]记住,勾选Regular expression原创 2016-06-15 10:07:05 · 4346 阅读 · 2 评论 -
ViewPager#PageChangeListener#onPageScrolled三个参数
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {原创 2016-12-07 09:13:00 · 5636 阅读 · 0 评论 -
UML类图小记
1.类图分三层:a) 第一层是类的名称,如果是抽象类,则就用斜体显示b) 第二层是类的特性:字段和属性c) 第三层是类的操作:方法2.类图的符号:a) ‘+’表示publicb) ‘-’表示privatec) ‘#’表示protected3.接口图的两种表示方法:a) 普通表示法 b) 棒棒糖表示法: 4.继承关系:空心三角形+实线。 5原创 2016-12-06 00:37:03 · 494 阅读 · 0 评论 -
记录源码学习列表
记录看过的源码:1.PullToRefresh2.ImageLoader3.EventBus4.Android的Handler、Looper回调机制5.afinal 主要有四大模块:FinalActivity、 FinalDB、FinalBitmap、FinalHttp(PS:ORZ,公司竟然还在用这个。。算了,只能顺手摸摸源码)。学习点:5.1 FinalAc原创 2016-10-13 23:58:53 · 494 阅读 · 0 评论 -
[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 · 460 阅读 · 0 评论