
android app 开发
文章平均质量分 51
一叶知秋dong
好记性不如烂笔头,记录学习和工作中的一些东东。
展开
-
Gerrit 工作流程
简介 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本库协同而引入的 repo,另外一个重要的创新就是 Gerrit —— 代码审核服务器。Gerrit 为 Git 引入的代码审核是强制性的,就是说除非特别的授权设置,向 Git 版本库的推送(Push)必须要经过 Gerrit 服务器,修订必须经过代码审核的一套工作流之后,才可能经批准并纳入正式代码库中...原创 2020-04-13 20:41:40 · 1625 阅读 · 0 评论 -
面向对象设计的SOLID原则
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。SRPThe Single Responsibility Principle 单一责任原则OCPThe Open Closed Principle 开放封闭原则LSPThe L转载 2016-06-22 10:43:57 · 5672 阅读 · 0 评论 -
Android酷炫实用的开源框架(UI框架)
Android酷炫实用的开源框架(UI框架)前言忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架、DB框架)。1.Side-Menu.Android分类侧滑菜单,Yalantis 出品。项目转载 2016-07-28 14:04:37 · 506 阅读 · 0 评论 -
2015最流行的Android组件、工具、框架大全
Android 是目前最流行的移动操作系统之一。 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件。本文试图将目前流行的组件收集起来以供参考, 如果你发现本文还没有列出的组件,欢迎在评论中贴出来,我会定期的更新本文。部分图片需要翻墙才能显示很好的中文教程Google Android官方培训课程中文版转载 2016-07-28 14:00:49 · 2979 阅读 · 0 评论 -
理解MVC,MVP和MVVM设计模式
原文链接:http://www.dotnet-tricks.com/Tutorial/designpatterns/2FMM060314-Understanding-MVC,-MVP-and-MVVM-Design-Patterns.html有3个非常受欢迎的MV-*系列设计模式:MVC,MVP,MVVM。他们被广泛应用于不多种结束。这篇文章我回阐述我自己对这3个设计模式的看法转载 2016-07-22 15:06:17 · 847 阅读 · 0 评论 -
从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
我们按照大致的历史进程将这些概念进行划分:ScriptCode Blocks、Code BehindMVC、MVP、MVVM我们知道的是现实的历史发生顺序并不如上,因为思想都是相似的,比如MVC很早很早就出现了,解释型语言至今基本上也有很多分支而且在互联网时代大行其道。但我要说的是:不要在意这些细节!当然了,这是玩笑,我的意思是,这些内容我懒得应该在另外独立的主题探转载 2016-07-22 14:58:19 · 579 阅读 · 0 评论 -
在Android开发中使用MVP模式
注:本文的这种编程方法只能作为一种参考,并不一定要在程序中实践,而且mvc也好mvp也好,其实没有一个固定的模式,只要能实现解耦,就是好的模式,并且,在小程序中使用mvp是完全没必要的。一、MVP介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数 据的可视化以及与用户的交互转载 2016-07-22 14:56:02 · 1025 阅读 · 0 评论 -
android 三种定位方式
最近在看android关于定位的方式,查了很多资料,也做了相关实验,在手机上做了测试,下面总结:一共有三种定位方式,一种是GPS,一种是通过网络的方式,一种则是在基于基站的方式,但是,不管哪种方式,都需要开启网络或者GPS 首先添加权限 uses-permission android:name="android.permission.ACCESS_COARSE_LO转载 2015-04-08 09:35:13 · 1639 阅读 · 0 评论 -
AndroidICS(4.0+)JNI局部引用的变化
译序:这篇文章的内容实际是在我发现一个项目bug后寻找解决方案时找到的,当时项目原有target为8(ICS 4.0之前的2.X版本),在4.0+的S3上运行一切正常,而后target升级到14时再在S3上运行时就会出现类似如下的native crash:05-13 14:07:13.139: E/dalvikvm(22265): JNI ERROR (app bug): at翻译 2015-03-24 08:20:31 · 959 阅读 · 0 评论 -
android.mk中添加目录中所有cpp
android开发中,经常遇到需要在andoid.mk文件中包含特定的cpp文件(或c文件)LOCAL_SRC_FILES := hellocpp/main.cpp \ ../../Classes/AppDelegate.cpp \ ../../Classes/ClipingNodeLayer.cpp\ ../../Classes/MainScene.cpp\转载 2015-01-06 18:32:10 · 4341 阅读 · 0 评论 -
用c语言生成xml文件
有时我们需要在c语言里生成一个很小的xml文件,为此去移植一些开源的方案原创 2014-09-17 08:49:54 · 7896 阅读 · 0 评论 -
GPS定位冷启动和热启动的区别
GPS模块一般支持冷启动(Cold start)和热启动(Hot start)两种模式(注:暖启动warm-start不讨论)1, 一般冷启动比热启动时间要长很多,以信号足够好为例,SirFIII的热启动为15秒以内,冷启动则需要42秒以内;在信号弱的情况下则需要更长时间; 热启动条件如下: (1)上次关机前的位置信息(经纬度,高度)已知(所以在车库内关机下次就一定转载 2014-09-12 16:09:41 · 20741 阅读 · 0 评论 -
【Android】任务和返回栈(tasks and back stack)
tasks and back stack 一个Task 就是一组activity的集合。这些activity按照它们打开的顺序被放置于一个先进后出的栈中(back stack)。 用户点击图标打开一个app时,该app的task会被移到前台显示。如果当前没有该app的task,系统将会新建一个task并在其中运行Main activity。 一个acti转载 2014-05-29 18:32:36 · 1321 阅读 · 0 评论 -
Fragments APIs
英文原文http://developer.android.com/guide/topics/fundamentals/fragments.html目录[隐藏]1Fragments2设计原理3创建Fragment3.1添加用户界面3.2将fragment添加到activity之中3.3添加无界面的fragment4管翻译 2014-06-06 10:59:45 · 746 阅读 · 0 评论 -
Android反编译工具Apktool使用
Android反编译工具:Apktool,支持Linux 、Windows下工作安装步骤如下:1.首先安装需要JAVA环境,先下载JDK/JRE,点击下载,已经有JAVA环境的可跳过此步2.到code.google上下载apktool.jar以及相关文件:http://code.google.com/p/android-apktool/downloads/list点击下载a转载 2014-06-24 16:56:00 · 963 阅读 · 0 评论 -
registerActivityLifecycleCallbacks 的用途
开发中,有时候需要监听每一个Activity的运行情况,比如统计用户对每个Activity使用情况,我们可以定义一个BaseActivity,在onStart()和onStop()人工插入统计方法。Android 4.0(API Level 14)新增了一个接口ActivityLifecycleCallbacks,用于监听应用中所有Activity的运行情况,解放了开发者统计分析Activit原创 2014-05-15 20:02:36 · 16699 阅读 · 1 评论 -
基于Android的OpenGL—使用GLSurfaceView
Android提供了两个基本的类让我们使用OpenGL ES API来创建和操纵图形:GLSurfaceView和 GLSurfaceView.Renderer。因此我们首先需要了解这两个类。1. GLSurfaceView:这是一个视图类,你可以调用OpenGL API在上面绘制图形和操纵物体,功能和SurfaceView相似。我们可以创建一个GLSurfaceView类的实例转载 2014-05-08 08:51:49 · 4392 阅读 · 0 评论 -
使用AIDL实现进程间的通信之复杂类型传递 .
上次讲到简单的AIDL进程间通信的操作,客户端向服务端发送一个String类型的参数,服务端也返回一个String类型的结果,看似已经可以完成基本的需要了。不过在有的时候,简单的数据类型并不能满足我们的需求,我们就需要考虑怎样向服务端传递复杂的数据类型。今天就来讲一下如何向服务端传递复杂类型的问题。首先要了解一下AIDL对Java类型的支持。1.AIDL支持Java原始数据类型。2.A转载 2014-03-25 09:30:27 · 693 阅读 · 0 评论 -
android NDK与Cygwin配置
1、Android 开发环境搭建Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。下载 JDK下载 Eclipse下载 Android SDK启动Eclipse , 安装 ADT2、下载安装Android NDK我使用的NDK版本为android-ndk-r8bGoogle 出的最新NDK 为 android-ndk...原创 2013-04-26 11:12:17 · 1744 阅读 · 1 评论 -
Android Looper类代码分析
本文将分析一下Looper类的实现及其应用,代码位于frameworks/native/lib/utils/Looper.cpp。主要分为如下几个部分:1. epoll系统调用接口简介2. Looper类代码分析3. Looper类应用实例分析一、epoll系统调用接口简介Looper事件机制实际上是依赖系统调用epoll实现的。转载 2016-08-12 15:01:39 · 1411 阅读 · 0 评论 -
Android6.0M权限管理封装
Android6.0M权限管理轻量级封装随着Android版本的不断更新,Google的Android开发人员也想到了Android应用在权限管理方面的各种问题,让好多用户摸不着头脑就使用了用户的隐私数据。 为了在权限这方面加强管理,安卓平台权限一直有被流氓应用随便利用诟病,Android M的发布彻底解决了这一问题,取而代之的是, app不得不在运行时一个一个询问用户授予权限转载 2016-11-17 16:02:37 · 951 阅读 · 0 评论 -
Android热更新介绍,Bugly热更新的集成和使用
1、为什么要用热更新 开发人员一定深有体会,上线的app突然发现一个bug影响用户使用,就需要重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用户下载、覆盖安装等步骤,用户还会抱怨怎么又升级了,频繁升级对用户体验也不好。就想到能不能像服务器哪样,如果有问题就替换某个文件重启,用户就可以继续使用了。这就衍生出热修复概念产生。2、什么是热修复 热修复通俗说就是...转载 2019-04-30 11:40:43 · 1000 阅读 · 0 评论 -
Android SDK版本号 与 API Level
Android 的API是程序员开发用的,所以API LEVEL可以认为是内部的;而SDK的版本提供了新特性给用户,是外部可见的。可以查看以下网址以获取最新的对应关系:http://developer.android.com/guide/appendix/api-levels.htmlAndroid SDK版本号 与 API Level 对应关系如下表:Cod原创 2017-06-15 08:37:47 · 515 阅读 · 0 评论 -
Unable to execute dex: Multiple dex files define 解决方法
问题发生概述: Eclipse程序编译正常,但是调试执行时,报错Unable to execute dex: Multiple dex files define xxx,但实际上提示重复的xxx文件从代码看没有重复,网上搜索众多解决方案都尝试后未果,还是自己琢磨。具体解决方案如下:在工程上右键->properties->Java Build Path->Order and Ex原创 2017-06-06 17:08:49 · 337 阅读 · 0 评论 -
android混淆套路
前言混淆是上线前挺重要的一个环节。android使用的ProGuard,可以起到压缩,混淆,预检,优化的作用。但是很多童鞋还没有掌握正确的写混淆文件的姿势。我希望搞个模板化的东西,让大家轻松搞定混淆。那么,开始写一个项目的混淆吧。。。我是不是很直接。。。。五步搞定1打开项目中的proguard-rules.pro,将下面的代码复制进去。我的思路是将混淆分为2个主要部转载 2017-05-27 10:56:40 · 260 阅读 · 0 评论 -
Android分享:代码混淆那些事
1) 前言 ProGuard是一个开源的Java代码混淆器。它可以混淆Android项目里面的java代码,对的,你没看错,仅仅是java代码。它是无法混淆Native代码,资源文件drawable、xml等。2) ProGuard作用压缩: 移除无效的类、属性、方法等优化: 优化字节码,并删除未使用的结构混淆: 将类名、属性名、方法名混淆为难以读懂的转载 2017-05-27 09:22:18 · 476 阅读 · 0 评论 -
Android 浮动窗口进阶——画中画,浮动视频
今天继续上一篇Android顶层窗口、浮动窗口的进阶应用。上一篇主要讲解了WindowManager服务和如何使用WindowManager编写一个顶层窗口。今天主要是讲讲如何在顶层窗口里面播放视频,这个功能对很多嵌入式设备来说十分有用。例如现在手机和平板上一些视频播放器就可以实现画中画功能,只显示一部分小窗口播放,用户可以继续操作其他功能。当你在看视频的时候收到短信,你只要进入画中画功能,视频可转载 2017-01-17 11:30:33 · 4844 阅读 · 0 评论 -
Android 实现顶层窗口、浮动窗口
做过Window程序开发的朋友应该都知道,我们要把程序窗口置顶很简单,只要设置一些窗口属性即可。但是到了Android,你无法简单设置一个属性,就让Android的Activity置顶。因为只要有新的Activity启动,你的Activity界面就会被挡住。今天介绍一下如何把一个窗口置顶。 也许会有人说:你的窗口置顶了,就会破坏系统的稳定性,影响其他程序使用,这是流氓行为o(╯□╰)o转载 2017-01-17 11:06:36 · 13162 阅读 · 0 评论 -
Android广播机制
1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间);2.同一app内部的不同组件之间的消息通信(单个进程);3.同一app具有多个进程转载 2016-12-01 11:09:00 · 884 阅读 · 0 评论 -
Android View及显示过程
Android View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。这就证明了一点,View代表了用户界面组件的一块可绘制的空间块。每一个View在屏幕上占据一个长方形区域。在这个区域内,这个VIEW对象负责图形绘制和事件处理。View是小控件widgets和View转载 2016-11-18 09:01:38 · 962 阅读 · 0 评论 -
Android流畅度测试
测试方法一:系统自带-开发者模式实际上,为了方便开发者测试,安卓本身就内置了流畅度检测的功能。不过,这需要我们开启隐藏的开发者选项。如果你在用原生系统,那么开启开发者选项的方法很简单,进入到设置菜单“关于手机”页面,点击数次“版本号”,即可开启开发者选项。如果用的是其他ROM,方法也许有所不同,比如说魅族的Flyme开启开发者选项的方法是在拨号界面输入“*#*#6961#*#*”,其他机器转载 2016-11-17 20:22:55 · 2588 阅读 · 0 评论 -
Android 显示原理简介
首先,用一句话来概括一下Android应用程序显示的过程:Android应用程序调用SurfaceFlinger服务把经过测量、布局和绘制后的Surface渲染到显示屏幕上。 名词解释SurfaceFlinger:Android系统服务,负责管理Android系统的帧缓冲区,即显示屏幕。Surface:Android应用的每个窗口对应一个画布(Canvas),即Su转载 2016-11-17 20:21:17 · 3926 阅读 · 1 评论 -
Android自定义View的实现方法
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/17357967一些接触Android不久的朋友对自定义View都有一丝畏惧感,总感觉这是一个比较高级的技术,但其实自定义View并不复杂,有时候只需要简单几行代码就可以完成了。如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种,转载 2016-11-17 19:55:40 · 660 阅读 · 0 评论 -
Android View绘制流程完全解析(三)
相信大家在平时使用View的时候都会发现它是有状态的,比如说有一个按钮,普通状态下是一种效果,但是当手指按下的时候就会变成另外一种效果,这样才会给人产生一种点击了按钮的感觉。当然了,这种效果相信几乎所有的Android程序员都知道该如何实现,但是我们既然是深入了解View,那么自然也应该知道它背后的实现原理应该是什么样的,今天就让我们来一起探究一下吧。一、视图状态转载 2016-11-17 19:53:01 · 657 阅读 · 0 评论 -
Android View绘制流程完全解析(二)
相信每个Android程序员都知道,我们每天的开发工作当中都在不停地跟View打交道,Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View的,如TextView、Button、ImageView、ListView等。这些控件虽然是Android系统本身就提供好的,我们只需要拿过来使用就可以了,但你知道它们是怎样被绘制到屏幕上的吗?多知道一些总是没有坏处的,那么我们赶快进入到转载 2016-11-17 19:40:24 · 418 阅读 · 0 评论 -
Android View绘制流程完全解析(一)
相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用于加载布局的。而刚接触Android的朋友可能对LayoutInflater不怎么熟悉,因为加载布局的任务通常都是在Activity中调用setContentView()方法来完成的。其实setContentView()方法的内部也是使用LayoutInflater来加载布局的,只不过这部分源码是in转载 2016-11-17 19:28:45 · 467 阅读 · 0 评论 -
Android 开源项目整理
这是一个基本把github上所有优秀安卓的开源代码整理了,下面是都是转自https://github.com/Trinea/Android-open-project,都是一些牛人,很有开源精神的达人做的,学习时,同时力推荐http://codekk.com/open-source-project-analysis;这个网站把许多开源项目进行了校验,还有源码分析说明,说的很详细,也是学习的好资源,这转载 2016-11-30 11:25:50 · 3043 阅读 · 0 评论 -
Android中解析XML .
XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,下面,我将一一向大家详细介绍。SAX解析器:SAX(Simple API for X转载 2014-03-25 09:10:46 · 822 阅读 · 0 评论 -
Android横竖屏切换
一、禁止横竖屏转换Android横竖屏切换在手机开发中比较常见,很多软件在开发过程中为了避免横竖屏切换时引发不必要的麻烦,通常禁止掉横竖屏的切换,通过在AndroidManifest.xml中设置activity中的android:screenOrientation属性值来实现。比如下列设置android:screenOrientation="portrait"则无论手机如何变转载 2014-04-03 13:53:04 · 1064 阅读 · 0 评论 -
android 依赖外部库的编译方法
如果我们需要用到第三方提供的动态库,需要先使用预编译,把第三方的动态库安装到libs目录,然后在需要调用的文件的Android.mk里使用LOCAL_SHARED_LIBRARIES += 来链接这些动态库。实施步骤:1.在jni下新建一个文件夹,把第三方动态库放进去,并添加Android.mk,形如以下:include $(CLEAR_VARS)LOCAL_MODULE :=原创 2014-03-20 15:20:05 · 2981 阅读 · 0 评论