Android Training学习笔记之适配不同的设备

Windows C语言编程:Beep API实现蜂鸣器原理与实战 如果你在 Windows 上写过 C 语言程序,想给程序加个简单的提示音,第一个想到的可能是 printf("\a") 。这个转义字符确实能在某些终端里发出“嘀”的一声,但它太原始、太不可控了,而且很多时候根本没声音。那么,有没有一种更“Windows”、更可控、更专业的方法来让你的程序“说话”呢? 答案是肯定的,而且它比你想象的要强大和复杂。Windows 提供了一个名为 Beep 的 API 函数,专门用于生成蜂鸣声。你可能觉得这功能太简单,甚至有点过时——不就是让电脑“哔”一声吗?但恰恰是这个看似简单 阅读详情

Android是一个开源的开放的操作系统,世界上的任何人都可以基于这个系统进行适合自己的定制活动。Android的这样一个特点使得android世界的碎片化很严重,形形色色的android设备太多太多。这就给app开发带来了不小的困难,保证app在不同的设备上的使用体验是一致的是每一个开发者必须考虑,但是很头疼的问题。Google在这块也做了很多的工作,尤其是在最新的android 6.0中,多设备的支持和自适应做的已经非常好了。要想让你的app能够利用google提供的优良自适应特性,你必须要遵守一些google的基本规范。google在training中给出了他的规范:
https://developer.android.com/training/basics/supporting-devices/index.html
这个规范一共分为3个部分:

  1. 支持不同的语言
  2. 支持不同屏幕的设备
  3. 支持不同系统版本的设备

接下来我们就简单学习一下google的基本规范。

1. 支持不同的语言

Android作为一个全球化的操作系统,android会运行在世界上任何一个国家,那么android的用户所使用的语言就是非常多样的。为了支持不同国家的语言,android提供了string resource机制,具体的做法就是:你应该在你的项目源码目录下的res目录(也就是你的app的resource目录)中,新建上众多这样格式的目录:

values-<ISO 639-1 locale codes>

然后在这个目录下面新建名为strings.xml的文件,这个文件中所有的tag都是以string开始,然后指定一个名字,最后指定一个对应的值:

<string name="app_name">HelloWorld</string>

这里需要说明一下,上面提到的ISO 639-1 locale codes是国际之间关于国家地区语言代码的ISO全球统一规范,当然android就是遵守这个的。关于ISO 639-1 locale codes规范的简介可以查看维基百科的介绍:
https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
全面的介绍可以查看ISO官网的spec:
http://www.iso.org/iso/home/standards/language_codes.htm
如果你的app支持多国语言的话,那么你的string资源目录可能有点像下面这个样子:

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

这个例子中支持了默认的语言支持(当找不到支持的语言资源的时候,默认使用这个,一般为英语),西班牙语支持,法语支持。以下是默认语言支持的示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

这是西班牙语支持示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>

这是法语支持示例:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

是的,就是这么简单,你只要在不同的目录下的strings.xml中定义上相同name不同语言翻译的string后,android系统就可以根据当前系统的语言来决定显示什么文字了!
我们使用这些string资源基本有两种方式:在java代码中使用和在xml等文件中使用,我们先看下再java代码中怎么使用:
来自google的例子

// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);

// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在xml文件中使用:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

2. 支持不同的屏幕

基于android系统的设备是如此之多,从小屏幕的智能手表到日常使用的智能手机,在从汽车上的智能车载到大屏幕的智能电视。屏幕的尺寸和分辨率是我们开发中必须要考虑的一个问题,同语言国际化一样,这块google也有自己的规范。
首先说明一下目前的屏幕尺寸和画面清晰度的分类:
四种屏幕尺寸:small(小), normal(中), large(大), xlarge(超大)
五种屏幕清晰度(细腻度):low(ldpi)低, medium(mdpi)中, high(hdpi)高, extra high(xhdpi)超高, extra extra high(xxhdpi)极高
这里需要额外说明一下,从android 3.2(api level 13)开始,上面4种屏幕尺寸已经不建议使用了,取而代之的是一种根据可用屏幕宽度管理屏幕尺寸的新技术。
通常来讲以上的几种屏幕尺寸和清晰度定义基本如下
来自google的图片
更多关于屏幕尺寸和清晰度的信息请参考google的说明:
https://developer.android.com/guide/practices/screens_support.html
在支持屏幕大小的方面,基本有两个问题:一是界面布局,而是图片显示大小。先说说界面布局问题,界面的布局和屏幕的尺寸关系比较大,如一个比较的大的屏幕尺寸和一个小的屏幕尺寸每屏显示的内容肯定不一样,大一点的屏幕可以显示多一点的内容,布局可以更加自由一些,小一点的屏幕显示的内容就比较少,界面元素布局就会相对紧凑一些。和支持多语言一样,在支持多屏幕尺寸上,我们也可以使用不同目录,同样文件名,不同布局内容的策略让android系统根据实际情况决定布局。我们可以在res目录下的layout目录建立这样的目录:

layout-<screen size pattern>

这里的screen size pattern可以是这样的:

空
land(表示横屏)
large(表示大屏)
large-land(表示大屏横屏)

也就是说你的目录可能会像这个样子:

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

但是,上面也提到了,这个技术在android 3.2之后就不需要使用了,因为android可以使用新技术来定义屏幕尺寸:
https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts
除了界面布局的问题,还有的就是app中图片的显示问题。不同的分辨率,清晰度去显示同一张图片肯定会有问题的,图片通常会有变形的问题。同样地,这个问题我们可以按照不同目录,同一个文件名的方式来处理这个问题。我们可以在res目录下建立这样的目录:

drawable-<density>

这里的density就是上面提到了几种,因此如果你的app支持不同清晰度的显示,那么你的图片资源目录可能像这样:

MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png

任何时候你都可以通过@drawable/awesomeimage的方式去使用这个图片,系统会根据当前设备的清晰度自动选择相应的图片显示。另外,不同清晰度之间的比例是这样的:

  1. xhdpi: 2.0
  2. hdpi: 1.5
  3. mdpi: 1.0 (baseline)
  4. ldpi: 0.75

也就是说,xhdpi是mdpi图片尺寸的2倍,如果xhdpi的尺寸是200*200的话,你的mdpi照片就是100*100.同时需要注意的是,低清晰度的图片不是必须的,当你制定了高清晰度的时候,如果设备是低清晰度的话,那么系统会自动按照这个比例缩放你的照片。不过,最好还是指定这样的图片,不然缩放的过程可能增加额外的内存和cpu消耗,并且缩放的效果不一定是你最想要的。图片资源中比较重要的可能就是app的icon的设计了,这个是app的门面,这部分的设计可以参考google的文档:
https://developer.android.com/design/style/iconography.html

3. 支持不同的系统版本

Android是一个快速演变的操作系统,可以看到google的发布更新频率是非常快的,android也在以一个非常快的速度进化着。在快速的版本演化中,有一个问题就是新旧的api版本兼容性的问题。老版本的api的可能早就废弃不用了,新版本的api提供了很好的特性但是很多设备部支持。在创建app的初始,就是决定app的目标平台和最低平台,google的建议是至少覆盖90%的设备用户。
为了让我们的app的能够正常良好地运行在不同版本上,我们需要在AndroidManifest中指定相应的版本问题。我们使用标签制定相应版本,目前可以制定的版本有:
minSdkVersion(最小版本)
targetSdkVersion(目标版本)
maxSdkVersion(最大版本)
其中我们一般制定最小版本和目标版本,最小版本指定你的app必须运行的版本,目标版本指定你的app运行的最理想的版本。这个部分在AndroidManifest中指定方式如下:

<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />

每个值都是一个int型的无符号数字,这个数字是android的api level。关于android的api level可以参考下面这个表格(来自google)
这里写图片描述
我们要填写的就是这表格中的API level中的数字。更多信息,参考:
https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels
为了获得更加灵活的操作方式,我们还可以在运行时判断当前系统的版本,方式如下:

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

就是使用Build类的常量判断,Build类包含了当前系统中的众多信息,包括cpu类型,设备名称,制造商,序列号等等信息,更多信息参考Build的api doc:
https://developer.android.com/reference/android/os/Build.html
这里再啰嗦一句,当系统解析xml资源文件的时候,android会自动过滤掉不识别或者不支持的特性。比如说,你在xml文件中使用了ActionBar这个元素,但是这个元素是android 3.0以上的版本才能支持的,如果是一个低于3.0版本的设备来解析这个xml文件的话,会自动忽略这个元素,而不会产生任何错误。
除了以上提到的内容,android在界面效果上还有一些有关系统版本之间的内容。对于每个android版本,没有版本都会有自己的style和theme,也就是风格和主题。比如说2.3版本的风格和4.0的界面风格就是有很大的不同,4.0的风格更加时尚;5.0之后的风格和主题就发生更大的变化了,因为引入了“原质化设计(material design)”,使得界面更加自然淳朴。使用这些内置的风格和主题可以使得你的app再不同版本的系统中以一种和系统版本相适应的风格方式显示。目前google自定了很多风格和主题,可以在以下的链接中看到完整的内容:
风格和主题的介绍:
https://developer.android.com/guide/topics/ui/themes.html
系统内置风格:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml
系统内置主题:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml
我们比较常见的有:
对话框主题:

<activity android:theme="@android:style/Theme.Dialog">

透明背景:

<activity android:theme="@android:style/Theme.Translucent">

当然,我们也可以仿造上面系统预定义的方式,自定义风格和主题,定义的内容一般写在res/values/styles.xml中,这里是一个例子:

<style name="CodeFont">
     <item name="android:layout_width">fill_parent</item>
     <item name="android:layout_height">wrap_content</item>
     <item name="android:textColor">#00FF00</item>
     <item name="android:typeface">monospace</item>
</style>

当然我们也可以继承自系统预定义的风格主题,使用parent关键字,比如:

<style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>

我们把上面的CodeFont风格继承自系统的TextAppearance.Medium风格了。更多的信息可以参考:
https://developer.android.com/guide/topics/ui/themes.html#DefiningStyles
我们使用主题或者风格的方式比较简单,如果相对某个activity应用主题风格可以这样:

<activity android:theme="@style/CustomTheme">

如果想对整个应用也就是所有的activity应用的话,可以这样:

<application android:theme="@style/CustomTheme">

关于风格和主题更加详细的资料,可以看看这个,解释的还是比较到位的(英文的,嘿嘿):
http://docs.appcelerator.com/platform/latest/#!/guide/Android_Themes

STM32F407中文手册 STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。 立即下载

相关推荐

kettle信息发送钉钉

由于其他的作业比较多,想要在job中加入一个转化发送消息到钉钉,其他的配置说明直接获取系统的信息。这样也避免直接修改其他的转换和大量的工作量。 步骤: 1、新建一个转换 拉取获取系统信息、获取变量、JavaScript代码、获取access_token组件。 2、获取系统信息设置 拿到需要的信息,比如作业的读写更新删除行数,job的日志内容 这个日志内容同在作业执行页面下输出的日志,所以可以在执行作业时选择是详细日志、基本日志还是错误日志。 3、获取变量 获取变量主要是想要去拿到job的名称,文件名。按

Deng_7788的博客 1447

从零学Android(四)、适配不同的Android设备

我们知道,现在的Android设备有许多的形状和尺寸。而我们的APP用户可能再使用各种各样的Android设备,为了让我们的APP能在这些设备上成功且正常运行,我们的APP就需要去适配不同的设备配置。我们一般从下面三个方面去考虑适配:语言、屏幕大小以及Android的系统版本。 1.语言适配 我们的用户大部分都是国人,但是也有可能是美国人,法国人啥的..这个时候我们的APP如果只支持中文的

Coder_Jim的博客 1544

从零构建XVC协议栈:FPGA+W5300的跨界调试架构实战

本文详细介绍了如何从零构建XVC协议栈,通过FPGA与W5300以太网控制器的创新组合实现跨界调试架构。重点解析了JTAG时序逆向、TCP/IP协议栈集成与XVC协议实现,提供了硬件设计优化和性能加速技术,为嵌入式开发者和FPGA工程师提供实用的远程调试解决方案。

raspberrypi5的博客 247

Android多屏适配完美方案,android不同机型的适配的解决方案(完整篇)

现在,市场上android的机型太多,如何让自己的应用更多的适配不同的机型,这是一个非常现实的并且是要处理解决的问题。android官方给出的解决文档是从三个方向来分析处理的。(1)支持不同屏幕大小的设备(Supporting Different Screen Sizes)1.1 合理使用wrap_content,match_parent1.2 尽可能的使用 RelativeLayout1.3 ...

weixin_39599081的博客 1495

【DMA】认识 DMA 及其工作流程(与传统CPU存取方式的区别)

【DMA】认识 DMA 及其工作流程(与传统CPU存取方式的区别)

challenglistic的博客 5万+

Win10 桌面回收站右键没有“清空回收站”选项怎么解决

Win10 桌面回收站右键没有“清空回收站” 选项怎么解决? 我之前不知道怎么捣鼓注册表(胡乱删了一些。。。) 导致想清空回收站的时候,右键却没有“清空回收站”这个选项了 以下是解决方法: 1、在桌面上新建一个txt文本文档,将以下代码拷贝进去: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\empty] "Com...

菜鸟的后花园 2万+

Android自适应不同屏幕大小的全部方法

转载于:https://www.jb51.net/article/139928.htm 本文讲述了Android自适应不同屏幕大小的全部方法。分享给大家供大家参考,具体如下: 本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法: 让你的布局能充分的自适应屏幕; 根据屏幕的配置来加载合适的UI布局; 确保正确的布局应用在正确的设备屏幕上; 提供可以根据屏幕大小自动伸缩的图片; 使用 "wrap_content" 和 "match_parent"。 为了确保你的布局..

weixin_42602900的博客 3195

用Python实现一个简单的远程桌面服务端和客户端

本文介绍了一个基于Python的轻量级远程桌面解决方案,针对商业软件在嵌入式系统上的兼容性问题、性能问题和成本问题。系统采用客户端-服务端架构,包含两个通信通道:5000端口传输压缩视频流,5001端口传输控制事件。通过多线程设计、图像压缩(JPEG+zlib)和网络优化(禁用Nagle算法)等技术手段提高性能。服务端实现了高效的屏幕捕获(使用mss库)、图像处理流水线和事件处理逻辑。客户端采用PyQt5构建UI界面,包含视频接收线程以减少主线程负担。该方案具有跨平台、开源免费、轻量级(核心代码不到500行

Hi20240217的博客 1660

Android屏幕适配dp、px两套解决办法

最新最全文章(2018-08-25):https://blog.youkuaiyun.com/fesdgasdgasdg/article/details/82054971 “又是屏幕适配,这类文章网上不是很多了吗?” 我也很遗憾,确实又是老问题。但本文重点对网上的各种方案做一个简短的总结,和具体使用方法。 若想了解具体android设备适配的前世因果,请阅读hongyang文章:http://blog....

阿杜 5万+

STM32实现薄膜压力传感器数据采集(标准库和HAL库实现)

薄膜压力传感器采集压力数据

XiaoCaiDaYong的博客 3万+

【RTD】二分法查找和分段线性插值算法在RTD中应用

二分法查找和分段线性插值算法在RTD中的典型应用。

只要思想不滑坡,想法总比问题多。 2371

meta name="viewport" content="width=device-width,initial-scale=1.0" 解释

<meta name="viewport" content="width=device-width,initial-scale=1.0"> content属性值 : width:可视区域的宽度,值可为数字或关键词device-width height:同width intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0...

weixin_30485379的博客 248

K230目标识别数字提问:模型只能识别近距离的目标,稍远一点就无法正确检测...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1899

【Android Training】置顶索引

学习了Android有段时间了,感觉还是官方的英文资料学习起来收获最大。之前看了很多Android Dev Guide里面的文章,也写过几篇文章,可惜没有坚持下去。这次学习官方培训课程,决定把自己所学与大家一起分享,写的不好的地方还请多多指教,多多支持,谢谢! 基础部分: (00)Building Your First App 这部分相对简单,翻译起来又比较繁琐,需要的请点击这里查看原文。

迁移到http://hukai.me 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【Android Training - 01】适配不同的屏幕[Lesson 1-支持不同的屏幕大小]

Dependencies and prerequisites[前提条件] Android 1.6 or higher (2.1+ for the sample app) Basic knowledge of Activities and Fragment Experience building an Android User Interface Several features...

mixer_a的专栏 287

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Training--支持不同的设备

支持不同的设备 全世界的安卓设备拥有各种各样的形状和大小。拥有如此广泛的设备类型,你的app无疑也有机会赢得广泛的群众基础。为了达到这个目的,你不得不针对这些设备的配置信息适配你的app。通常你应该考虑的事情是如何适配不同的语言,屏幕大小和不同的安卓平台版本。   本课将教会你如何利用平台的基本功能例如利用可选资源和其他一些功能,在开发一个单独的应用包(APK)的前提下,在不同的安卓兼容设备

夏商周 457

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android文档Training之设备适配

语言适配在android开发过程我们习惯或者说应该习惯把一些资源文件单独拿出来放到资源文件夹中那个,比如说string,在不同地区显示不同的语言,比如说我们把手机上的语言切换成西班牙语,这时我们的app就应该也切换到默认的西班牙语文件资源,这样可以使得我们的app更加国际化。我们知道,在android studio中新建一个工程的时候res文件夹下会有value文件夹,这个文件夹一般存放string

sinat_35815676的博客 358

Android Training - 支持不同的设备

世界上有很多不同形状和尺寸的android设备。支持广大的设备类型,你就有机会获得广大的用户群。为了在android上取得更大成功,你的程序需要适配不同的设备配置。你需要支持不同的语言,不同的屏幕尺寸,和不同的Android平台版本。 这个课程教你怎么使用基本的平台特征,利用不同的资源和其他特性,让你的程序在不同的Android兼容设备中得到最优的用户体验,并且是使用一个APK包来实现这

小何才露尖尖角 1008

Android Training - 适配不同的屏幕(Lesson 2 - 适配不同屏幕密度)

Supporting Different Densities 上一篇文章和大家分享了如何适配不同大小的屏幕,有个概念需要提前弄清楚,屏幕大的不一定就分辨率高,详细请看下面的内容。 This lesson shows you how to support different screen densities by providing different resources and using

416

Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言

原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/index.html支持不同的设备在世界上,Android设备以很多种形状和尺寸呈现。正因为有这么多种设备,你的应用有机会被巨多的用户所使用。为了在Android上尽可能的成功,你的应用需要适配花样繁多的设备配置。一些重要的点就是你应该考虑包含不同的语言、适配各

SAHADEV的专栏 1666

Android Training - 适配不同的屏幕(Lesson 1 - 支持不同的屏幕大小)

Android设备屏幕不一,为了更好的用户体验,我们必须做适配不同屏幕的操作 Dependencies and prerequisites Android 1.6 or higher (2.1+ for the sample app) Basic knowledge of Activities and Fragment Experience building an Android

689

【Android Advanced Training - 01】适配不同的屏幕[Lesson 2 - 适配不同屏幕密度]

Supporting Different Densities适配不同的屏幕密度 上一篇文章和大家分享了如何适配不同大小的屏幕,有个概念需要提前弄清楚,屏幕大的不一定就分辨率高,详细请看下面的内容。 This lesson shows you how to support different screen densities by providing different resou...

mmdev 178

【Android Training - 02】适配不同的屏幕[Lesson 2 - 适配不同屏幕密度]

Supporting Different Densities适配不同的屏幕密度 上一篇文章和大家分享了如何适配不同大小的屏幕,有个概念需要提前弄清楚,屏幕大的不一定就分辨率高,详细请看下面的内容。 This lesson shows you how to support different screen densities by providing different resources an

迁移到http://hukai.me 3442

1.3_Android Training 学习笔记_兼容不同的设备

1.3.1 适配不同的语言 通过元素来引用自己的字符串资源。 1.3.2 适配不同的屏幕 对这个没什么感觉,感觉都是放一个资源文件夹里,好像都能适配到。除了横屏竖屏。不过国内的软件好像都不怎么适配横屏竖屏。 1.3.3 适配不同的系统版本 现在2.2,2.3的设备应该是几乎绝迹了。平时都没遇到过了,这也得益于国产手机的普及啊。可以通过如下方法检测系统版本并对应运行不同的代码。 if (B

thinkcode 208

【Android Training - 02】适配不同的屏幕[Lesson 1 - 支持不同的屏幕大小]

Dependencies and prerequisites[前提条件] Android 1.6 or higher (2.1+ for the sample app) Basic knowledge of Activities and Fragment Experience building an Android User Interface Several features r

迁移到http://hukai.me 5971

android training英文,Android Training

Getting Started1.Build your first app1.给DisplayMessageActivity新增点击返回MainActivityandroid:parentActivityName=".MainActivity" >android:name="android.support.PARENT_ACTIVITY"android:value=".MainActivit...

weixin_33985453的博客 205
上一篇: Android Training学习笔记之开始篇
下一篇: 面向对象的思想
createchance
博客等级 码龄15年 156粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值