首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从R.attr引用返回颜色资源id的Android测试方法

是通过使用Android的资源解析器来实现的。在Android中,R.attr是一个资源属性的引用,它指向一个特定的资源值,如颜色、尺寸等。要从R.attr引用返回颜色资源id,可以按照以下步骤进行测试:

  1. 首先,在测试类中创建一个Context对象,用于获取资源。
  2. 使用Context的obtainStyledAttributes方法获取一个TypedArray对象,该对象包含了指定主题中的属性值。
  3. 使用TypedArray的getResourceId方法,传入R.attr引用作为参数,获取对应的资源id。
  4. 最后,使用Context的getColor方法,传入资源id作为参数,获取颜色资源的实际值。

下面是一个示例代码:

代码语言:txt
复制
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertEquals;

@RunWith(AndroidJUnit4.class)
public class ColorResourceTest {

    @Test
    public void testColorResource() {
        // 获取测试上下文
        Context context = InstrumentationRegistry.getInstrumentation().getContext();

        // 获取主题属性值
        TypedArray typedArray = context.getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimary});

        // 获取颜色资源id
        int colorResourceId = typedArray.getResourceId(0, 0);

        // 获取颜色资源的实际值
        int color = context.getResources().getColor(colorResourceId);

        // 断言颜色值是否与预期相等
        assertEquals(Color.RED, color);

        // 释放资源
        typedArray.recycle();
    }
}

在这个示例中,我们使用了Android Testing Support Library提供的InstrumentationRegistry来获取测试上下文。然后,我们通过obtainStyledAttributes方法获取了主题中R.attr.colorPrimary属性的值,并使用getResourceId方法获取了对应的资源id。最后,我们使用getColor方法获取了颜色资源的实际值,并使用断言来验证颜色值是否与预期相等。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供具体的链接。但是,腾讯云作为一家知名的云计算服务提供商,提供了丰富的云计算产品和解决方案,可以通过访问腾讯云官方网站来了解更多相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android编程实现通过反射获取资源Id方法

本文实例讲述了Android编程实现通过反射获取资源Id方法。...分享给大家供大家参考,具体如下: 在将自己写工具打成.jar包时候,有时候会需要引用到res中资源,这时候不能将资源一起打包,只能通过反射机制动态获取资源....特别用在自己定义一个工具将其打成.jar包时,特别注意资源获取 1、封装成一个工具类 package com.cp.utils; import android.content.Context; public...paramContext.getResources().getIdentifier(paramString, "array", paramContext.getPackageName()); } } 2、资源获取...相关内容感兴趣读者可查看本站专题:《Android资源操作技巧汇总》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android数据库操作技巧总结》、《Android

1.6K20

基于Android中获取资源id和url方法总结

一、获取android工程里面的各种资源id; 1.1 string型 比如下面: << string name=”OK” 客户端请求成功 << / string //string资源中...mipmap文件夹下或者drawable文件夹下面的:比如ic_launcher.png // mipmap文件夹下名称为ic_launcher图片id //mipmap资源id int...", "layout", getPackageName()); 二、获取Android系统里面的资源id //获取系统里资源id android.R.drawable.ic_menu_share int...获取Android工程资源Uri路径,一般是图片,res或者asset下 //*获取Res资源url ContentResolver.SCHEME_ANDROID_RESOURCE*/ Uri uri...("file:///android_asset/" + "qq.png"); 以上这篇基于Android中获取资源id和url方法总结就是小编分享给大家全部内容了,希望能给大家一个参考。

2.4K30

Android库项目中资源ID冲突解决方法

1、前言 Android Studio对模块化开发提供一个很有用功能就是可以在主项目下新建库项目(Module),但是在使用库项目时却有一个问题就是资源ID冲突,因为编译时SDK会自动帮我们处理这个问题...这样照成结果就是主项目进行编译时一旦发现资源ID冲突,库项目中对应资源文件以及引用资源文件代码都需要重新编译。...在编译时,如果库项目与主项目的资源ID发生了重复,资源被分配了新ID后库项目之前编译过代码也就失效了。...根据前面所说,当项目整体编译时,库项目的资源ID一旦与主项目的资源ID发送冲突,库项目的资源会被重新分配ID导致其R类被修改。显然这个过程并不涉及R2类,R2类中保留仍然是过时ID。...R2起到作用仅仅是提供一个符号名,只要让程序知道在生成代码时对应哪一个变量即可。这个方法可以说是很“tricky”了。 以上就是本文全部内容,希望对大家学习有所帮助。

1.9K10

Android开发 - 样式和主题

value属性可以是一个关键字字符串,一个16进制颜色描述,一个其他资源类型引用,或者在其他样式属性中依赖value。下面是一个简单示例样式文件内容: 元素中parent属性是可选并且指向一个其他样式中资源ID,它可以从这个样式中继承一些属性。合适的话,你可以重写(override)继承到属性。...:textSize">30sp 这里CodeFont和CodeFont.Red继承了,又添加了 android:textSize 属性 注意:这样通过链接名称方式来继承方法...要发现更多 仅仅作用于theme主题 属性,查看R.attr 引用以windows开始属性。...,这里,因为android:windowBackground 属性仅仅支持其他资源引用,不像 android:colorBackground属性可以指定一个颜色描述文本。

1.8K10

这些Android系统样式中颜色属性你知道吗?

Android 系统样式中颜色属性 推荐阅读看完后彻底搞清楚Android Attr 、 Style 、Theme 几个常用颜色属性 先放上一张经典图片,图片来自网络。 ?...这张图在网上很是流传,也不知道当初是哪位大神标注,很好说明了 Android 系统中几个常用颜色属性作用范围。...在开发者官网 R.attr 中给我们列出了所有的系统属性,我们可以在这里面找到对应颜色属性所代表意思。...editTextColor: 默认 EditView 输入框字体颜色 TextColor TextView 文字颜色 更多查看这里 样式介绍 Android 5.0 开始,Android 系统引入了...这两种样式也有不同使用方法 Theme.AppCompat 一般用于设置整个应用程序全局主题 ThemeOverlay.AppCompat 用于覆盖特定视图主题,覆盖相关属性使他们成为亮或者暗

1.8K10

Android资源那些事儿

Color资源 与字符串资源类似,我们可以事先在xml文件中定义,并在之后对其进行引用颜色资源所对应xml文件位于/res/values/目录下。...android:textColor="@color/colorWhite"/> 方法与对string资源引用大同小异,不再赘述。 dimen资源 dimen是dimension缩写,表示尺寸。...这种类型数组也叫做TypedArray,其中数组项可以定义Drawable对象等。 在数组每一项中都引用了/res/values/colors/中定义颜色资源。...res = getResources(); //向obtainTypedArray()方法中,传入R.array.color_array //返回一个TypedArray对象,命名typedArray...该方法可以根据R类中id获取到实际Drawable对象。 StateListDrawable资源 顾名思义,StateList就是一个state(状态)集合。

84020

Android注解支持(Support Annotations)

如果该代码为null检查结果,你应该为方法注解@Nullable。 资源类型注解 Android资源值通常都是使用整型传递。...请注意,如果你API支持多个资源类型,你可以使用多个注解来标注你参数。 IntDef/StringDef: 类型定义注解 整型除了可以作为资源引用之外,也可以用作“枚举”类型使用。...RGB颜色整型 当你API期望一个颜色资源时候,可以用@ColorRes标注,但是当你有一个相反使用场景时,这种用法就不可用了,因为你并不是期望一个颜色资源id,而是一个真实RGB或者ARGB颜色值...id而不是颜色时候,lint就会标记出这段不正确代码: ?...@VisibleForTesting 你可以把这个注解标注到类、方法或者字段上,以便你在测试时候可以使用他们。

1.1K30

【OpenGL ES】OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解

, 着色器类型有两种 , GLES20.GL_VERTEX_SHADER 顶点着色器 , GLES20.GL_FRAGMENT_SHADER 片元着色器 返回值 : 该方法返回是着色器引用 (2...(3)编译着色器 GLES20.glCompileShader(shader); 参数 : shader是着色器引用  返回值 : 该方法没有返回值类型 执行这个方法前提是 ,...初始化着色器相关api 初始化着色器流程 : 获取顶点,片元着色器 -> 创建着色程序 -> 着色程序中顶点着色器获取顶点位置,颜色,投影矩阵引用 (1) 获取着色器属性变量引用 int...绘制3D图形相关api 绘制三角形流程 :  (1) 指定着色器程序 GLES20.glUseProgram(mProgram); 参数 : 着色程序引用id 作用 : 该方法作用是指定程序中要使用着色器...和 片元着色器脚本 * ② 根据获取顶点 片元着色器脚本创建着色程序 * ③ 着色程序中获取顶点位置引用 , 顶点颜色引用, 总变换矩阵引用 * * @param mv

1.5K30

求知 | Android资源加载那些事 - 小试牛刀

介于此,本篇将由浅入深,源头理清 Resource.getx() 那些事,从而为理解 Android资源加载 迈出第一步。故此名: 小试牛刀。...其会在开发阶段生成相应R类以及对应 资源ID ,以便开发者在使用时通过传递 资源Id ,从而获取相应类型资源文件。...如果此次获取文本资源是字符串类型,则直接字符串常量池中去取,否则将取到文本资源转为字符串后返回。...id 关联颜色,具体源码如下: 当我们调用 getColor() 时,内部先会通过 getValue() 获取相应 color 资源,并将其保存到 TypeValue 中;如果不存在资源文件,...,则先从预加载数组中取,如果此时没有加载,则创新 ColorStateList ,并将其存到预加载数组中; 如果当前要获取颜色类型是引用类型,则意味着当前可能要从xml中去取。

53720

求知 | Android资源加载那些事-小试牛刀

介于此,本篇将由浅入深,源头理清 Resource.getx() 那些事,从而为理解 Android资源加载 迈出第一步。故此名: 小试牛刀。...其会在开发阶段生成相应R类以及对应 资源ID ,以便开发者在使用时通过传递 资源Id ,从而获取相应类型资源文件。...如果此次获取文本资源是字符串类型,则直接字符串常量池中去取,否则将取到文本资源转为字符串后返回。...id 关联颜色,具体源码如下: 当我们调用 getColor() 时,内部先会通过 getValue() 获取相应 color 资源,并将其保存到 TypeValue 中;如果不存在资源文件,...() 获取颜色资源,如果该资源在缓存中存在,则直接取出并返回实例,否则根据当前要加载类型,如果是 “#xxx” ,则直接初始化并添加到缓存,否则判断 TypedValue 中保存资源信息 后缀

56250

Android自定义圆形View实现小球跟随手指移动效果

实现思路: 1)自定义View,在onDraw中画圆作为小球; 2)重写自定义ViewonTouchEvent方法,记录触屏坐标,用新坐标重新绘制小球; 3)在布局中引用自定义View布局,运行程序...继承View实现自定义View; 1)重写自定义View三个构造方法 2)初始化自定义属性 3)对自定义属性对象做回收资源逻辑处理 4....实现onDraw()方法; 1) 用canvas将屏幕设为白色 2) 设置画笔颜色为红色 3) 绘制小圆作为小球,半径通过自定义属性设置 5....)修改为return true,原因是: * 1)父类onTouchEvent(event)方法可能没有做任何处理,但是返回了false。...-- 自定义控件全类名 -- <com.bwie.BallViewDemo.customView.BallView android:id="@+id/ball" android:layout_width

1.7K30

Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

整数, 颜色, 数组 信息 XML文件目录, 这些XML文件资源根元素是resource; -- res/xml : 原生XML文件, 可以使用 Resource.getXML()方法进行访问;..., 这个资源名称是对应类型子标签 name属性值; (2) Java代码访问原生资源 Resource类 : Android资源访问控制类, 该类提供了大量方法获取实际资源, Resource通过...Context.getResource()方法获得; -- 获取清单资源 : resource.getString(id), 根据id获取实际资源; -- 获取原生资源 : resource.getassets...字符串 颜色 尺寸资源文件简介 (1) 几种资源目录引用名称 字符串资源 :  -- 默认目录 : /res/values/strings.xml ; -- 引用方式 : R.string.xxx ;...(int id), 根据普通数组资源名称获取实际普通数组, TypeArray类提供了getXxx(int index)方法获取指定索引元素; -- 获取字符串数组 : String[] getStringArray

58840

《移动互联网技术》第六章 资源管理: 掌握定制控件样式、界面主题、可绘制资源程序编写方法

通过本课程学习应达到以下目的: 1.掌握移动互联网基本概念和原理; 2.掌握移动应用系统设计原则; 3.掌握Android应用软件基本编程方法; 4.能正确使用常用移动应用开发工具和测试工具...3、本单元学习方法 结合教材以及Android Studio开发软件,对各种资源访问方法进行编程练习,并在模拟器中观察运行情况,分析资源管理方式。...工程角度来看,把资源代码中分离出来,使得程序更容易维护,同时也可以实现界面和程序逻辑分离,可以让界面设计师与程序员并行工作,提高了开发效率。...第一种,通过Android自动生成R文件来访问资源;第二种,采用Android提供资源类来访问;第三种,很多资源文件都是xml文件格式,可以在这些资源文件之间相互引用。.../tools ​ ​ style=“@style/CustomButton” ​ Android:id=“@+id/my_button” ​ android:layout_width=“match_parent

7410

Android Studio 3.6 正式版终于发布了,快来围观

要启用拆分视图,请单击编辑器窗口右上角”拆分”图标。 颜色选取器资源选项卡 在此版本中,我们希望更轻松地应用已定义为颜色资源颜色。...在 Android Studio 3.6 中,颜色选取器将填充应用中颜色资源,以便快速选择和替换颜色资源值。颜色选取器可在设计工具和 XML 编辑器中访问。...您可以引用具有 ID 所有视图,这些视图没有空指针或类强制转换异常风险。这些差异意味着布局和代码之间不兼容将导致生成在编译时失败,而不是在运行时。...,现在 Kotlin 也支持: JNI 声明导航到 C/C++ 中相应实现函数。...概括地说,Android Studio 3.6 包括这些新增强功能和功能 设计设计编辑器中拆分视图 颜色选取器资源选项卡已 开发 视图绑定 NDK 修改 Intelli J平台更改 Add classes

3.1K10

Android 开发第四讲 TextView基本使用

Android 开发第四讲 TextView使用 一丶TextViw 1.1 TextView主要作用 ​ TextView可以进行如下 文字大小,颜色设置,显示文字 显示不下文字时候 使用 .....下我们定义ID 但是返回值是view类型, //所有我们要进行转换 转换为Button Button m_BtnText = (Button) findViewById...常用属性写法 TextView中Text属性可以指定你要显示名称.可以直接写,也可以引用另一个Xml文件中信息 在Android Studio中 Values下记录这是一些信息....比如strings.xml colors.xml等信息 android:textColor = "#000000" 可以设置字体颜色 android:text="HelloWorld"...) findViewById(R.id.Text_ViewId6); //调用方法设置 //设置中划线,但是可能会有锯齿.所以调用去掉锯齿方法 m_TextViewId5

78620

Android 开发杂记——@, @+, ? 介绍

在java 代码中,通过 R 类获取到资源 ID 后,就可以调用 Android API 来调用对应资源。...默认引用当前包名下资源文件; 可以加上 android 包名,表示引用系统资源文件; :资源类型 :资源名称 例程 1:...android:attr/android:textDisabledColor" 这里引用是主题中按钮不可用时颜色,即系统定义好颜色值:darker_gray。.... @+ 符号 如果我们需要引用资源,就必须要在 R.java 中添加一条记录,方可进行引用。@+ 符号作用就是添加一条记录。...后记 好久没有写博客了,写该篇博客也是拿到 Google Android 应用源代码,硬怼之后发现怼不动,就把不懂地方挑出来,用写博客方法增强记忆。

93550
领券