android框架

Android开发指南-框架主题-用户界面

半世苍凉 提交于 2019-12-04 04:28:46
用户界面User Interface 关键类 View ViewGroup Widget classes 在一个Android应用中,用户界面是由View 和ViewGroup对象构建的。View与ViewGroup都有很多种类,而它们都是View类的子类。 View对象是Android平台中用户界面体现的基础单位。View类是它称为“widgets(工具)”的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。ViewGroup类同样为其被称为“Layouts(布局)”的子类奠定了基础,它们提供了象流式布局、表格布局以及相对布局之类的布局架构。 View对象是一个数据体,它的属性存储了用于屏幕上一块矩形区域的布局参数及内容。并负责这块它所辖的这个矩形区域之中所有测量、布局、焦点转换、卷动以及按键/触摸手势的处理。作为一个用户界面对象,View同时也担任着用户交互关键点以及交互事件接受者的角色。 视图层次View Hierarchy 在Android平台上,你可以用下图所示的View和ViewGroup层次图来定义一个Activity的UI。这个层次树可随你所愿的简单或者复杂化,你能使用Android预定义的一套工具和布局来创建它,或者使用你自己定义的Views来创建。 为了把一个视图层次树展现到屏幕上,你的Activity必须调用setContentView(

9. Android安全机制

时光怂恿深爱的人放手 提交于 2019-12-04 02:15:26
Android安全机制 Android的安全机制包括以下几个方面: 进程沙箱隔离机制 应用程序签名机制 权限声明机制 访问控制机制 进程通信机制 内存管理机制 SELinux 进程沙箱隔离机制 Linux是一个多用户的操作系统,一个UID标识一个用户。用户之间是相互隔离的(这种隔离是建立在访问控制的基础上实现),用户有各自独立的所属资源和权限范围。当多用户登录Linux系统时,每个用户的活动都在各自独立的环境中进行,互不干扰。 Android将Linux系统的用户隔离机制移植为应用程序隔离,应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。 应用程序签名机制 应用程序包(.apk文件)必须被开发者数字签名; 同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。  签名的过程:   • 生成私有、公共密钥和公共密钥证书    • 对应用进行签名    • 优化应用程序 签名的作用:   • 识别代码的作者。   • 检测应用程序是否发生了改变。   • 在应用程序之间建立信任,以便于应用程序可以安全地共享代码和数据。 权限声明机制 Android程序默认无法访问系统和资源,应用程序需要显式声明权限、名称、权限组与保护级别

Android 夜间模式主题切换方案

核能气质少年 提交于 2019-12-04 01:41:04
由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验。目前越来越多的应用开始把夜间模式加到自家应用中,没准不久google也会把这项功能添加到Android系统中吧。 业内关于夜间模式的实现,有两种主流方案,各有其利弊,我较为推崇第三种方案: 1、通过切换theme来实现夜间模式。 2、通过修改uiMode来切换夜间模式。 3、通过插件方式切换夜间模式。 值得一提的是,上面提到的几种方案,都是资源内嵌在Apk中的方案, 像新浪微博那种需要通过下载方式实现的夜间模式方案 ,网上有很多介绍,这里不去讨论。 下面简要描述下几种方案的实现原理: 1、通过切换theme来实现夜间模式。 首先在attrs.xml中,为需要随theme变化的内容定义属性 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="colorValue" format="color" /> <attr name="floatValue" format="float" /> <attr name="integerValue" format="integer" /> <attr name="booleanValue" format="boolean" /> <attr name=

android 中adt ,sdk,api的对应关系

三世轮回 提交于 2019-12-04 01:00:42
ADT(Android Development Tools): 目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具 的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。 adt只是一个eclipse的插件, 里面可以设置sdk路径 SDK(Software Development Kit): 一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 在Android中,他为开发者提供了库文件以及其他开发所用到的工具。简单理解为开发工具包集合, 是整体开发中所用到的工具包, 如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发 。 SDK可以自己编译,在linux环境下通过make命令进行,耗时比较长,需要有耐心哦亲。。。 然后我们可以把自己编译的SDK通过ADT导入eclipse。在此基础上可以对源码包进行修改, 比如修改android system/app/phone.apk中的源码,然后再次调用make命令, 就可以产生新的 system.image 文件,此文件是镜像文件。 ---------- 手机 ROM中包含两个基本的image,一个是boot.image

Android开发者指南(10) —— Android API Levels

好久不见. 提交于 2019-12-04 01:00:28
Android开发者指南(10) —— Android API Levels 前言   本章内容为开发者指南(Dev Guide)/Appendix/Android API Levels,版本为Android3.0 r1,翻译来自:"jackeylu",欢迎大家访问他的博客:" http://jackeylu.wordpress.com/ ",再次感谢"jackeylu" !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。 声明   欢迎转载,但请保留文章原始出处:)     博客园: http://www.cnblogs.com/     Android中文翻译组: http://goo.gl/6vJQl 原文 http://developer.android.com/guide/appendix/api-levels.html Android API Levels 在本文中 API 的级别是什么? 在Android中使用API级别 开发者需要考虑的内容 应用程序的向前兼容性 应用程序的向后兼容性 平台版本和API级别的选择 声明最低API级别 针对高版本的API级别测试 使用临时的API级别 通过API级别进行文档内容过滤 参见 <uses-sdk> manifest element 当你开发你的 Android 应用程序时,了解该平台

Android开发指南-框架主题-数据存储

二次信任 提交于 2019-12-03 23:44:43
数据存储Data Storage 概览Storage quickview ² 系统偏好:快速,轻量级存储 ² 文件:存储到设备内部或可移动闪存 ² 数据库:任意的结构化存储 ² 支持基于网络的存储 一个典型的桌面操作系统提供了一个通用文件系统使得任何应用程序能够使用它来存储文件,这些文件可以被其它应用程序读取(可能有访问权限的设置)。Android使用一个不同的系统:在Android上,所有应用程序数据(包括文件)都是该应用程序私有的。 不过,Android同样提供了一个应用程序向其它应用程序暴露其私有数据的基本方式-通过内容提供器。内容提供器是应用程序的可选组件,用来暴露该应用程序数据的读写接口,且遵循任何可能引入的约定。内容提供器实现了一个用来请求和修改数据的基本语法,一个读取返回数据的基本机制。Android为基础数据类型如图像,音频和视频文件以及个人联系人信息提供了许多内容提供器。想要了解更多如何使用内容提供器的信息,请参见一篇单独的文章:内容提供器(Content Providers)。 无论你是否想把应用程序数据输出给别人,你总需要有一个方法来保存它。Android提供了下面4种机制来保存和获取数据:系统偏好Preferences,文件Files,数据库Databases和网络Network。 系统偏好Preferences 系统偏好是一个用来存放和提取元数据类型键

Android动态加载——jar/dex

女生的网名这么多〃 提交于 2019-12-03 23:07:39
前言    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势。本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病。 声明   欢迎转载,但请保留文章原始出处:)     博客园:http://www.cnblogs.com     农民伯伯: http://over140.cnblogs.com     Android中文翻译组: http://androidbox.sinaapp.com/ 正文   一、 基本概念和注意点     1.1  首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar       原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex。       所以这条路不通,请大家注意。     1.2  当前哪些API可用于动态加载       1.2.1   DexClassLoader        

Google推荐——Glide使用详解

一个人想着一个人 提交于 2019-12-03 20:38:28
零、前言 本文所使用的Glide版本为3.7.0 「推荐」设计模式系列 设计模式(零)- 面向对象的六大原则 设计模式(一)- 单例模式 设计模式(二)- Builder模式 设计模式(三)- 原型模式 设计模式(四)- 工厂模式 设计模式(五)- 策略模式 设计模式(六)- 状态模式 设计模式(七)- 责任链模式 设计模式(八)- 解释器模式 设计模式(九)- 命令模式 设计模式(十)- 观察者模式 设计模式(十一)- 备忘录模式 设计模式(十二)- 迭代器模式 持续更新中... 一、简介 Glide,一个被google所推荐的图片加载库,作者是bumptech。这个库被广泛运用在google的开源项目中,包括2014年的google I/O大会上发布的官方app。(PS:众所周知的简介就到此为止了) Glide 对于 Android SDK 的最低要求是 API level 10 Glide滑行的意思,可以看出这个库的主旨就在于让图片加载变的流畅。现在被广泛使用,当然还是有很多开发者使用Square公司的picasso,也有两个库的对比 原文链接: http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en 译文链接: http://jcodecraeer.com/a

Android开发中的NinePatch圖檔

点点圈 提交于 2019-12-03 19:36:07
传统UI开发中,如果背景的大小不一样,一般需要为每种大小都 制作一张图片,这在button中尤为明显。当然我们也可以一小块一小块水平重复的画,也可 以垂直的话。在android中专门有一种叫nine patch图片(以 9.png结尾)来解决背景大小不一样时,只用一张背景图片。 用自带的tools\draw9patch.bat 打开一张png图片,我们可以在png图片最外面的空格画一个像素宽的黑线。左边是编辑区,在左边的图中,左边黑线的高度决定了垂直拉升时的扩展区域,也 即当垂直拉伸时,只有这个区域的图片会被拉伸。同理图片上边的黑线长度决定了水平拉升时的扩展区域。右边区域是拉升的效果图,从上之下分别为垂直拉伸,水 平拉伸,以及两个方向的拉升。该工具提供了所见即所得的nine patch png编辑方式 。 把编辑后的png保存为 9.png到工程目录的res/drawable目录下,如果你的9.png中没有黑线,那么eclipse是会报错的。 效果图如下。从中我们也可以理解为什么叫 nine patch,相当于把一张png图分成了9个部分,分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样 NinePatch是一種

android仿摩拜单车APP、炫酷RecyclerView、卡片滑动、仿饿了么点餐、自定义索引等源码

吃可爱长大的小学妹 提交于 2019-12-03 18:53:38
Android精选源码 Android自定义索引源码 LayoutManager实现的卡片滑动 android仿摩拜单车APP源码 一个仿饿了么带伸缩位移旋转动画的购物车按钮 一个功能强大的TextView,可以满足日常大部分布局方式 android仿IT之家app源码 android仿饿了么点餐页面 LayoutManagerGroup一句代码搞定炫酷RecyclerView Android优质博客 国产Android权限申请最佳适配方案 前言permissions4m 最初的设计是仅仅做成一个编译器注解框架,在1.0.0版本时,它纯粹地实现了原生 Android 请求流程,关于它的设计思路可以查看这篇如何打造一个 Android 编译时注解框架。但是当投入笔者自己项目中使用的时候,笔者发现国产手机有许多适配缺陷,例如:ActivityCompat.sh... 阅读原文 为什么 Activity 不应包含 UI 逻辑 这篇文章中我们将通过面向对象设计中的单一职责原则来观察 Activity,并试图了解如何更好地在 Activity 中实施单一职责原则。Activity下面是官方对 Activity 的一个简短描述:Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。... 阅读原文