学习内容 Android中的各种资源 国际化及资源自适应 能力目标 了解Android中资源的种类 掌握Dimension资源、Assets资源的使用 掌握样式和主题资源的使用 熟练掌握国际化和屏幕适配...本章中我们就针对Android中的各种资源,包括字符串资源、尺寸资源、样式和主题资源、图片资源、布局资源等以及国际化和资源自适应等知识进行深入讲解。 ...Android应用对这种情况做了很好的改进:比如将字符串资源、颜色资源、数组资源、菜单资源等都放到res目录中定义,然后在应用程序中直接使用这些资源中定义的值。...在Java代码中引用系统资源的格式为:android.R.资源的种类.资源的ID。 在XML布局文件中引用系统资源的格式:@android: 资源的种类/资源的ID。 ...8.4.2 颜色资源 Android允许将颜色值作为资源保存在资源文件中,保存在资源文件中的颜色值以#开始。
但是当我们需要change的时候就得一个个去替换,其实在android里有很多小技巧可以让这些资源进行复用,减少体积的同时也可以使项目结构更加清晰。...在android studio中,右击drawable目录,选择new - Vector Asset,可以创建一个系统自带svg矢量图,或者通过svg、psd文件导入。...一个方法是在view中设置android:rotation属性 <ImageView ......组合 有时候我们有的资源是几个其他资源组合而成的,其实这时候我们没必要再重新切一个组合后的图。 使用layer-list即可,通过设置位置,并且通过上面所说的旋转等方法可以实现各种组合情况。...比如示例中: <?xml version="1.0" encoding="utf-8"?
文章目录 一、错误记录 二、解决方案 三、DataBinding 布局 - 字符串拼接 一、错误记录 ---- 在 Android Studio 中 DataBinding 报错如下 : Skia GL...$NotFoundException: String resource ID #0xd at android.content.res.Resources.getText(Resources.java:...at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 二、解决方案 ---- 在 DataBinding 中设置的数据类模型如下...int 类型的 ; DataBinding 的布局文件如下 : 资源 ID 进行处理 , 肯定会报错 ; 这里将其转为 String 类型设置 ; 将 android:text 属性值 , 设置为 @{String.valueOf(
在Android中为了实现不同屏幕的适配,经常会用到在不同dimen.xml文件中对于同一dimen ID定义不同的大小,然后在代码中通过getDimension函数来获取,下面就来说说几种getDimension...函数的用法。...getDimension()是基于当前DisplayMetrics进行转换,获取指定资源id对应的尺寸。文档里并没说这里返回的就是像素,要注意这个函数的返回值是float,像素肯定是int。...getDimensionPixelOffset()与getDimension()功能类似,不同的是将结果转换为int,并且偏移转换(offset conversion,函数命名中的offset是这个意思...我用的手机的density是2.0所以所以会乘以2。
点击蓝字 关注我们 作者:Dean Ellis 排版:Rani Sun 随着 .NET 8 的发布,我们引入了一个新系统,用于生成访问 Android 资源的 C# 代码。...新系统生成一个名为 _Microsoft.Android.Resource.Designer 程序集。其中包含每个程序集的所有最终资源类。 什么是 Android 资源?...请参阅 Google 文档以深入了解 Android 资源。 Android构建过程的一部分是使用android sdk工具aapt2将这些资源编译成二进制形式。...为了访问这些资源,android 公开了一个 API,它允许您传递一个整数 id 来检索资源。...旧系统使用了名为 UpdateIdValues 的方法,该方法在启动时调用。该方法将遍历所有库项目并更新资源 Id以匹配应用程序中的资源 Id。根据应用程序的尺寸,这可能会导致严重的启动延迟。
Android为了帮助开发者把应用更方便发布给全球不同语言的人们使用,建议开发者在进行开发时不要把UI呈现相关的文本内容硬编码,而是把内容写入到strings.xml中,这样做更加灵活,也更方便翻译成不同其他语言...getString(R.string.buy_kindle) 添加参数 现在你觉得这句话把买Kindle的数量写死了,因为你在代码中不同地方都用到了这句话,但所买的Kindle数量不一样。...strings资源让开发者可以自主在字符串的任何位置加上参数,比如要解决这个问题,可以: 一 ...具体做法如Java中的formatter方法一样,请参考: http://developer.android.com/reference/java/util/Formatter.html 国际化 比如想把这句话翻译成英文...翻译成如下: I want to buy %1$s Kindle 从中可以发现Kindle这个词并没有翻译,Android中对无需翻译的词
,Resources准备加载插件的环境 1)ClassLoader的处理 Android中的ClassLoader类加载器派生出的有DexClassLoader和PathClassLoader。...即宿主和插件中需要通过接口类型转换的,将插件中该接口去除。...缺点2:只使用插件的Resouces,宿主的setContentView方法前的其他资源加载不到,日志中会有异常报出support包相关的资源找不到。...采用腾讯shadow中的方案: 第一步,加载插件中的resources,无需反射的方式如下: private Resources buildPluginResources() { try...获取资源时,先搜索插件的Resouces,如果找不到,则从宿主Resouces中找,代码如下: package com.sq.a37syplu10.plugin.resources; import android.annotation.TargetApi
title: 2016-5-5未命名文件 tags: UI适配,图片资源 grammar_cjkRuby: true --- 概述: 本文整理了Android开发中,图片资源的提供方式和使用方式...可以在Android开发文档中,Develop > API Guide > App Resources 目录找到有关应用资源的更全面的介绍。...Note: 在Android 3.2之后的版本,有新的资源组织方式,本文只侧重关于早先的资源的组织方式的整理。...1.为什么提供不同设备配置的资源文件 除代码外,资源文件也是安卓程序中必不可少的部分,如图片、布局文件,甚至是音频、视频等原始多媒体文件。不同于代码文件的是,UI资源文件是和设备的显示器密切相关的。...静态图片资源(可以是多种备选)中.9.png是特殊的一种,在UI适配时很常用。
接触过Android开发的同学们都知道在Android中访问程序资源基本都是通过资源ID来访问。这样开发起来很简单,并且可以不去考虑各种分辨率,语言等不同资源显式指定。...痛点 但是,有时候也会有一些问题,比如我们根据服务器端的值取图片,但是服务器端绝对不会返回给我们的是资源id,最多是一种和文件名相关联的值,操作资源少的时候,可以维护一个容器进行值与资源ID的映射,但是多的话...便捷的方法 在这种情况下,使用文件名来得到资源ID显得事半功倍。 通过调用Resources的getIdentifier可以很轻松地得到资源ID。...defType和defPackage省略时,需要将其设置成null 注意这个方法不提倡,因为直接通过资源ID访问资源会更加效率高 如果资源没有找到,返回0,在Android资源ID中0不是合法的资源ID...AssetManager.class中的native方法。
getResources().getIdentifier("add","drawable",getPackageName())); 但是对于以上做法, 官方并不推荐,并且 getIdentifier这个写library的时候..., 如果里面需要引用主程的资源且R所在的包名未知时还是很有用的(如果在gradle里修改了packageName, R所在的包名是和packageName不一样的,没法反射),当然也是有解决的办法:...如果愿意,是可以根据业务拼接出 “package_name.R.drawable.class” 的。...但是如果这样的话,视具体情况一定有更好的解法。 以上摘自该评论 se of this function is discouraged....另外,这个方法,需要一个Context的引用。 推荐的做法 // 在你的代码中使用此方法 public static int getResId(String variableName, Class<?
ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。...这些值可以在代码中用android.R.id引用到。若在ids.xml中定... ids.xml——为应用的相关资源提供唯一的资源id。...id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到。...3)在自己写的xml中,使用android:id = “@+id/id_name”的形式,就和在eclipse中一样,搜一下会发现android源码中也有这么用的,这样ids.xml和public.xml...其它常用的资源文件: attrs.xml——当中定义的是类的属性,属性是为了能在xml文件中被引用到,换句话说就是指定类中变量(也就是属性的实际作用者)的值。这些属性会在类的构造函数中用到。
这样有利于程序的解耦。所以我们才可以在XML文件中定义各种资源类型,并在其他的xml文件或java代码中进行引用。 String资源 字符串资源所对应的xml文件位于/res/values/目录下。.../text_name" /> android:text="@string/text_name"所表达的 正是引用同一包下字符串资源文件中名为text_name的字符串资源。...Color资源 与字符串资源类似,我们可以事先在xml文件中定义,并在之后对其进行引用。 颜色资源所对应的xml文件位于/res/values/目录下。...如果我们的布局中有多个view需要指定相同的尺寸,那么我们可以事先在dimen资源中对该尺寸进行定义,之后便可以很方便地复用。 dimen资源所对应的xml文件位于/res/values/目录下。...接下来可以在java代码中对该数组中的资源加以运用。
今天偶遇 android.content.res.Resources$NotFoundException: BUG可让我一顿好找。特此记录!...场景还原: 在RecyclerView Adapter中获取布局崩溃 ,起初查网上说的是 1. R文件的问题,有的说删除 当我删除后依旧不行。。。。。。...5.更有甚者 说 AS的问题,我把AS重装了 历时 一个半小时 。。。...没用 好了网上方法都试了没用 == 我都快放弃了,突然想到在没有使用本地json测试的时候是好的 ,我考虑是数据的问题,然而数据是好的Log有显示 。我放弃了==。...我把我的代码发给了一位大佬,起初把大佬也难住了,后来经过大佬的一步步测试,原来我一直信任的json本地获取数据这块出问题了, 原来: /** * 读取assets目录下的文件,并返回字符串
assets目录下存放的原生资源文件,通过getAssets()方法获取....(JSONException e) { e.printStackTrace(); } 其中数据存在于assets\data\chat.isp文件中:...,","type":"1"},{"time":"14:26:18","content":"嗯,在的,","type":"2"}] 可以存储一些不更改的不用编译的数据
Android string.xml为我们的应用程序提供可选样式和格式的文本数据。可以有三种类型的字符串资源:字符串,字符串数组,复数。...下面是Android string.xml示例: //普通字符串 Hello world!... 具体用法 LogUtil.debug(String.format(getResources().getString(R.string.hello_str),"我的"
刚刚看了一下一个帧布局的简单Android示例,纠结了半天不知道如何将图片加到resource中的drawable中去。 ...比如在一个TestDemo的Res/drawable文件夹中,新添加一张图片资源要如何添加。 ...我直接将图片复制到bin\res\drawable-hdpi或者bin\res\drawable-mdpi中去,然后在eclipse中刷新图片仍然不显示。 ...上网找到了关于加载图片资源的问题解决办法: 直接拷贝需要添加的图片资源,然后在Res/drawable文件夹 右键点击 选择“粘贴”即可把图片拷贝进去。...下面是一个简单的帧布局Android应用实例,实现一只小鸟飞翔的动画效果,参考了《大话企业级Android应用开发实战》15.2.5帧布局(FrameLayout) P110-113页。
在Resources类中,所有获取资源名称、资源包名、资源ID等等的方式都是通过AssetsManager对象来获取的。...通过Android Studio中可以打开这个文件: ? Resources.arsc 在AAPT打包的时候,默认的包都是0x7f,而且Type都是固定的。...中查找资源Id的过程: 遍历已经添加的AssetsPath路径 根据对应的AssetsPath路径中查找resources.arsc资源表,匹配资源表中的包名 匹配到后,根据Type来找到对应的资源类型表...在资源Type表中匹配Name,找到ID 在标准的Gradle打包中,R.java是不会被修改成常量的,对于资源的引用还是会保持R.string.about,而不会使用常量的0x7f来替换。...插件资源路径,也就是插件APK的路径 插件方案 当使用插件,并且资源外置在插件APK中的时候,需要完成以下事情: 将插件APK的所在路径添加到AssetManager中,以便AssetsManager
如何使用插件中的R资源 一种解决方式是插件里需要用到的新资源都通过纯Java代码的方式创建(包括XML布局、动画、点九图等),蛋疼但有效。...(其实应该有3套,Android系统会加载一套framework-res.apk资源,里面存放系统默认Theme等资源) 这里你可能注意到了我们采用了反射的方法调用AssetManager的“addAssetPath...,APP实际上运行的代码逻辑在android.jar里面(位于android-sdk\platforms\android-XX),反编译android.jar并找到ResourcesManager类就可以发现这些接口都是对应用层隐藏的...; } public final native String[] getLocales(); } 加载插件中的layout资源 我们使用LayoutInflate对象,一般使用方法如下...方法中,对Context的mResources进行替换,这样,我们就可以加载离线apk中的布局了。
Drawble是Android应用中使用最灵活,也是最广泛的资源,不仅可以直接使用".png",“.jpg”,".9.png"等图片做为资源,也可以直接使用多种XML文件作为资源。...只要一份XML文件可以被系统编译成Drawble子类的对象,那么这份XML文件就可以作为Drawble资源Drawble下图片资源最简单的资源,吧 “.png”,“.jpg”,".9.png"等格式放入.../res/ drawble-xxx目录下,Android应用在编译应用时会自佛呢及时加载图片,并在R清单类中生成该资源的索引Drawble下StateList Drawble资源用于组织多个 Drawble...>Drawble 下Shape Drawble资源用于定义一个基本的几何图形(例如:圆形,矩形,线性),定义 Shape Drawble的XML文件的跟元素的运用场景:椭圆形的文本框 android:width="3dip" android:color="#ff0" />Drawble下Clip Drawble资源代表从全位图上街区的一个图片的片段
ContextCompat.getDrawable(getActivity(), R.drawable.name);
领取专属 10元无门槛券
手把手带您无忧上云