Storm-Shadow
愿君出走半生,归来时仍是少年
展开
-
Android12 Framework 添加新自定义系统服务并在APP中调用
方便起见,我们是添加在 android.app 包中 (平台可能会限制我们添加到自定义的目录)这里仅 声明了 一个 plus 函数,实现对两个 int 值的加法, 并返回 int 值的结果, 相当简单。原创 2022-10-28 19:26:49 · 2964 阅读 · 0 评论 -
Android面试高频知识点
一、JAVA基础1.synchronized的修饰对象当synchronized用来修饰静态方法或者类时,将会使得这个类的所有对象都是共享一把类锁,导致线程阻塞,所以这种写法一定要规避无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。实现同步是要原创 2021-06-03 11:50:30 · 227 阅读 · 0 评论 -
android Caching Bitmaps
在界面上加载显示单个图片是非常方便,也不会出现性能上的问题。但是如果要加载的图片非常多,如在 ListView、GridView、ViewPager 中加载图片,就会有性能和用户体验体验的问题了。这些控件加载的图片可能会很快滑出屏幕,然后又很快地滑回来了。为了让界面更加流畅,为了更好的用户体验,就有必要使用缓存了。如果没有缓存,那么当滑出屏幕的图片需要再次显示时,就得重新加载了,而图片的加载消耗的翻译 2015-05-22 18:13:21 · 678 阅读 · 0 评论 -
eclipse memory analyzer(MAT) 让 Bug 无处藏身
这段时间在做项目的时候,为了更好的用户体验,在 https://github.com/wasabeef/awesome-android-ui 用了一些现成的控件。其实有些控件本身是有 Bug 的,不过还好有 eclipse memory analyzer(MAT) 的帮助,解决这些现在控件的 Bug 不是太困难的事情。关于 MAT 的基本概念,如有时间再写一篇文章详述。这里用一个分析实例来记录下如何原创 2015-06-27 17:20:58 · 899 阅读 · 0 评论 -
Handling Runtime Changes(retain Fragment)
一些设置在发生 configurations change 的时候(如屏幕旋转、语言改变等),会重新启动当前处于运行太的 activity(即先调用 onDestory(),再调用 onCreate())。重新启动 activity 是为了让它能够适应新的 configuration,它能够根据新的 configuration 加载合适的资源。 要处理好 restart 事件,就有必要在 a翻译 2015-05-26 15:27:12 · 1005 阅读 · 0 评论 -
实现自适应的UI界面
根据 app 当前的所显示的 layout,UI 界面往往会有差异。如在 dual-pane 模式下,点击左侧的 item,会直接在右侧显示相应的内容;但是如果是在 single-pane 模式下,那么内容将会被显示到另外的界面上(通常会显示在另外的 activity 上)。 一、那么如果决定当前要采用怎样的 layout 呢? 也许你需要的所有 layout 之间都是有差异的翻译 2015-08-29 15:59:10 · 2033 阅读 · 0 评论 -
Android 雷达扫描效果
第一个实例 RadarView 用到了自定义属性,然后在构造方法里面读取相关属性值,用来确定绘制的参数 。RadarView 还提供了开始、停止扫描和释放资源的接口,具体实现看源码吧 。要注意的是 onDraw() 是频繁调用的方法,而且绘制过程比较耗时,所以尽量不要在这个方法里做初始化资源的操作,以确保自定义 View 的流畅体验 。同时,在 Activity 被销毁的时候,要停止 Rada原创 2015-09-25 23:45:36 · 1432 阅读 · 0 评论 -
How to Use FontAwesome in an Android App(把 icons 变得和 text 一样)
原文链接 http://code.tutsplus.com/tutorials/how-to-use-fontawesome-in-an-android-app--cms-24167 FontAwesome,即象形字,这一章主要讲如何使象形字能够像一般的文字一样在 TextView 中使用 。使用象形字有以下优点: 首先,不用担心不同设备上的不同屏幕密度 。翻译 2015-09-27 12:18:49 · 917 阅读 · 0 评论 -
Android Material Design Snackbar Example
http://www.androidhive.info/2015/09/android-material-design-snackbar-example/ Snackbar 是 Material Design 引入的一个很有用的组件,Snackbars 和 Toast 非常的相似,这两者最大的区别是 Snackbars 可以响应用户的交互事件。Snackbars 会显示在屏幕翻译 2015-09-27 14:27:01 · 1267 阅读 · 0 评论 -
Android Layout 优化
Layouts 是 Android app 中的很重要的一部分,它直接关系到用体验的问题 。如果 Layouts 没实现好,那么它会很容易导致内存紧,从而导致用户操作不流畅 。但是 Android SDK 有工具可以用来分析 layout performance 。在接下来的几章中,你将学会如何实现流畅的 layout,而内存占用能降到最少 。 首先简要介绍一下各章节的内容1. Opti翻译 2015-09-20 16:33:38 · 771 阅读 · 0 评论 -
Android 屏幕适配(Supporting Different Screen Sizes)
本章交从以下几方面来讲解如何使 UI 适配到不同的 screen sizes 。* 确保 layout 可以正确的 resized,以适应不同的屏幕* 根据不同的屏幕 configuration,提供合适的 layout* 确保特定的 layout 应用到特定的 screen* 为不同的屏幕提供不同大小的 bitmaps1. 正确使用 wrap_content 和 ma翻译 2015-09-21 23:00:52 · 929 阅读 · 0 评论 -
Android自定义View(自定义控件)
在 Android 的 framework 中已经有很多标准的 Views 类,用于实现显示数据及与用户交互的功能 。但是有时候,有些功能无法通过系统预定义的这些 views 来实现 。好在 Android 允许我们自定义 View,本章就来讲解一下如下创建一个健壮的、可利用的自定义 View 。 我们将分几个小节来讲解自定义 View 的过程:1. Creating a View翻译 2015-09-23 20:39:38 · 980 阅读 · 0 评论 -
浅谈 Android 体系结构
很多没有写博客了,最近一段时间一直忙着工作,另外一方面也在忙着学点更深层次的东西及一些新的东西,如 Android Framework、PHP 等等。经过那么长时间的努力学习,终于初步了解了 Android Framework 及相关的东西,还有 PHP、ThinkPHP 等等。现在工作也不是很忙了,终于有时间写点总结了。其实我这篇文章写的挺杂的,也算不上是 Android 体系结构,但是实在原创 2015-12-23 14:33:48 · 1027 阅读 · 0 评论 -
Android App 中简易的网络数据处理方法
前言:由于工作需要,前段时间都在忙着写 php,这段时间又来写 Android 了,我就是这么个兴趣广泛不安分的人,哈哈。 在做电商应用的时候,App 通常要发送大量的网络请求,服务器返回数据通常都是 Json 或字符串格式的。新手在做开发的时候,习惯于在 activity 或 fragment 里面直接处理与它相关的网络请求(发送请求、处理服务器返回的数据),这样会导致一些 activ原创 2016-05-04 18:17:46 · 1297 阅读 · 0 评论 -
Android App 第一次打开时的引导界面
Android App 第一次打开时的引导界面,这个需求是非常多的。在写新项目的时候,刚好要用到,在网上找了一下 demo,没发现非满意的。所以只好自己动手写一个,分享一下,避免以后大家重复造轮子。效果图如下(虽然有点丑) 上面这个就是引导界面 GuideActivity 的界面了,实现思路很简单:主界面用 FrameLayout 布局,后面用 ViewPager 装载图片。下面原创 2016-05-06 20:49:42 · 2661 阅读 · 0 评论 -
Ubuntu下编译vlc for android
哈哈,已经一年多没冒泡了,有没有人想我哈。这一年多的时间里,我依然坚持努力学习,包括学习PHP、Linux、JS之类的各种技术,还有文学、英语等等。前几天还做了一个自己的网站(http://www.yichenxing.com/),在上面发布的东西包罗万象,欢迎大家来踩踩哦。好了,下面是今天小弟为大家带来的文章:在Ubuntu下编译vlc for android。Vlc for andro原创 2017-05-27 10:30:10 · 2666 阅读 · 2 评论 -
Ubuntu14.04 Android 源码编译
一、安装设置 gcc、g++ 版本Ubuntu 系统使用的 gcc、g++ 版本随着发布版本的不同而不同,在编译 Android 系统时不同的版本应该用相应版本的 gcc、g++ 去编译。因为每次 gcc、g++ 的版本升级,其语法规则都可能发生一些改变,所以在用高版本的 gcc、g++ 编译低版本的 Android 系统时,会有语法不兼容的现象,从而导致编译无法进行(会出现很多改原创 2015-06-24 15:03:11 · 1441 阅读 · 4 评论 -
Ubuntu14.04 vlc-for-android 编译过程
vlc-for-android 编译指南官方网址:https://wiki.videolan.org/AndroidCompile编译过程中要严格按照官网上的操作步骤来,下面我结合自己的实际操作来总结一下,在 Ubuntu14.04 环境下,从安装 jdk 到最终成功编译 vlc-for-android 的整个过程。1. 下载安装 jdk1.7Jdk1.7下载官方网原创 2015-06-23 11:56:14 · 2887 阅读 · 2 评论 -
Android Messenger 进程间通信
一. 基本实现 Messenger Class Overview Reference to a Handler, which others can use to send messages to it. This allows for the implementation of message-based communication across processes, by原创 2014-11-10 00:09:21 · 1233 阅读 · 0 评论 -
Android Processes and Threads
Processes and Threads 概述 在默认情况下,每个 app 都运行在自己的 process 中,而且同一 app 中的所有 components 也运行在这个 process 中 。 activity 中的任何慢速、阻塞的操作都应该在一个新的线程中进行,以免使 UI 线程响应速度变慢(甚至出现 ANR) 。一. 本章主要讨论以下内容 Pr翻译 2014-10-28 00:33:48 · 690 阅读 · 0 评论 -
Android Tasks and Back Stack
Tasks and Back Stack 概述 所有的 activities 都属于特定的 task; 一个 task 中包含一系列的 activities ,用户可以与之交互; Tasks 可以被移到后台,并保存它所包含的 activity 的状态信息,这样用户在执行其它操作时,之前的操作状翻译 2014-10-11 22:11:44 · 1269 阅读 · 0 评论 -
Fragments for background processing
1. 概述 本文主要讨论如何利用 Fragment 来处理 configuration 的改变的问题,即在 configuration 发生改变的时候,我们怎样保持 objects (如正在运行的线程、Sockets 及 AsyncTasks),以便能够再次恢复它们的状态。 为了回答这个问题,我们会先谈谈开发者面临的一个难题 :在 Activity 的生命周期变迁期间,如何处理需翻译 2014-10-29 23:14:47 · 935 阅读 · 0 评论 -
Android Application Fundamentals
应用程序基础一. 概述 一个应用程序由一个或多个应用组件组成,这些基本组件包括 activities, services, content provides 和 broadcast receivers 。每个组件在整个应用程序中都扮演不同的角色,而且每种组件都可以单独地运行,甚至可以通过别的应用来启动它们。必须要在 manifest 文件中声明应用中的所有组件,同时还要声明应翻译 2014-09-27 17:07:15 · 1081 阅读 · 0 评论 -
Android Activities
一. Activities 概述 一个 Activities 代表一个与用户交互的屏幕界面,而且 Activities 可以退至后台,当它恢复运行可以恢复到退至后台前的状态。 本章主要讨论以下内容 创建一个 Activities 实现一个用户界面 在 manifest 中声明一个Activities 启动一个 Activi翻译 2014-10-02 14:07:00 · 830 阅读 · 0 评论 -
Android Guts: Intro to Loopers and Handlers
本章的主题是 Android 的 Looper 和 Handler 的用法,正如我们所知道的一样,Looper 和 Handler 是 Android 中非常有用的两个类 。通过它们的帮助,我们可以做很多很 cool 的事情 (假设你已经理解了 Looper 和 Handler 的作用和基本用法,否则对你来说这篇文章可能有点难)。 那么我们可以用 Looper 和 Handler 来做什翻译 2014-10-30 21:15:50 · 1033 阅读 · 0 评论 -
Android 性能调优
原文件链接:http://developer.android.com/training/articles/perf-tips.html#AvoidFloat一. Android 性能调优 本章主要讨论以下内容: 1. 尽量不要创建无用的对象 2. 用 static 比用 virtual 好 3. 应该用 static final 来修饰常翻译 2014-12-06 18:23:31 · 900 阅读 · 0 评论 -
Android MediaPlayer
android.media.MediaPlayer MediaPlayer 类可以用来控制音频/视频文件的播放,android.widget.VideoView 类演示了如何使用 MediaPlayer 这个类的方法。本章的主题包括以下几个方面:1. State Diagram(状态转换图)2. Valid and Invalid States翻译 2014-12-13 14:52:20 · 3772 阅读 · 0 评论 -
Android Bluetooth Low Energy
本章主要内容Key Terms and Concepts(关键术语和概念)Roles and Responsibilities(角色和职责)BLE Permissions(BLE 权限)Setting Up BLE(BLE 设置)Finding BLE Devices(查找 BLE 设备)Connecting to a GATT Server(连接到一个翻译 2014-12-12 17:43:52 · 1508 阅读 · 0 评论 -
Android Bluetooth
本章内容提要 1. 概述 2. Bluetooth 权限 3. Bluetooth 设置 4. 查找设备 1)查询匹配设置 (2)发现设备 5. 连接设备 ( 1)以 server 方式连接 (2)以 client 方式连接翻译 2014-12-11 13:53:40 · 1224 阅读 · 0 评论 -
深入浅出Android Support Annotations
原文链接:http://anupcowkur.com/posts/a-look-at-android-support-annotations/本文Gitbooks链接: http://asce1885.gitbooks.io/android-rd-senior-advanced/content/shen_ru_qian_chu_android_support_annotations.h转载 2015-02-21 13:06:04 · 771 阅读 · 0 评论 -
Android Fragments
Android Fragments 概述 Fragments 把 app 的功能和 UI 分解成可复用的模块 把多个 fragments 添加到一个屏幕以,避免切换 activities Fragments 有自己的生命周期、状态和回退栈 Fragments 要求 API 11及以上的版本一. 本章主要讨论以下内容 设计哲学翻译 2014-10-04 02:01:46 · 901 阅读 · 0 评论 -
Android Services
Android Services 一个 Service 是一个可以在后台执行耗时操作的应用组件,它在执行过程中并不提供用户界面。其它的应用组件可以启动一个 Service ,当 Service 被启动后,它就会在后台持续执行,即使用户切换到别的应用组件。此外,一个应用组件可以与一个 Service 绑定,从而可以和所绑定的 Service 进行交互,甚至进行进程通信(IPC)。如一个翻译 2014-09-29 20:21:56 · 885 阅读 · 0 评论 -
android mediaplayer 自定义 mediacontroller
以前做的一个项目,与流媒体相关的,那时学了好多相关知识,还写了一个自定义的 MediaPlayer Controller。现在稍微有点时间,简单整理一下,顺便分享出来。你要做的只是实现 Controller.ControlOper,并把 Controller 设置为你的 MediaPlayer 的控制器即可。注意那个mPlayer.setDataSource()里面那个 url,是个开放的 r原创 2015-05-20 22:54:06 · 9349 阅读 · 0 评论 -
Android Managing Bitmap Memory And Loading Large Bitmaps Efficiently
除了图片缓存外,还有一些方法可以优化 gc 和图片的重用。具体的方法和不同的 Android 版本有关。你可以通过后面提供的 demo 来学习如何在不同版本的 Android 版本上高效地处理图片。 在 Android 2.2(API 8)及更低的版本中,当 gc 触发的时候,app 的主线程会被阻塞,这样会降低应用性能和用户体验。从 Android 2.3 开始,gc 变成了并发的操作,这翻译 2015-05-28 22:21:08 · 1038 阅读 · 0 评论 -
Android Interface Definition Language (AIDL)
一. 本章主要讨论以下问题 1. 定义 ALDL 接口 1.1 创建 .aidl 文件 1.2 实现接口 1.3 把接口暴露给 clients 2. 通过 IPC 传递 Objects 3. 调用 IPC 方法 ALDL 即接口定义语言,也许和你所用的别的 IDLs 是类似的 。其提出是为了让你能翻译 2014-11-09 20:16:16 · 989 阅读 · 0 评论