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

无法在安卓4上的自定义视图中从TypedArray获取可绘制内容

在安卓4上的自定义视图中,无法直接从TypedArray获取可绘制内容。TypedArray是一种用于存储和操作特定类型数据的数组,通常用于在XML布局文件中定义自定义视图的属性。然而,在安卓4中,TypedArray只能用于获取基本数据类型的值,如整数、浮点数等,无法直接获取可绘制内容。

要在自定义视图中获取可绘制内容,可以通过以下步骤实现:

  1. 在XML布局文件中定义自定义视图的属性,其中包含可绘制内容的引用。例如,可以使用@drawable来引用一个可绘制资源。
  2. 在自定义视图的构造函数中,获取TypedArray对象,通过context.obtainStyledAttributes(attrs, R.styleable.YourCustomView)方法来获取。
  3. 使用TypedArray对象的getDrawable()方法获取可绘制内容的引用。注意,这里获取到的是Drawable对象,而不是直接的可绘制内容。
  4. 在自定义视图的onDraw()方法中,使用获取到的Drawable对象进行绘制操作。可以使用draw()方法将Drawable绘制到画布上。

以下是一个示例代码:

代码语言:txt
复制
public class YourCustomView extends View {
    private Drawable drawable;

    public YourCustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.YourCustomView);
        drawable = typedArray.getDrawable(R.styleable.YourCustomView_customDrawable);
        typedArray.recycle();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (drawable != null) {
            drawable.setBounds(0, 0, getWidth(), getHeight());
            drawable.draw(canvas);
        }
    }
}

在上述示例中,假设在XML布局文件中定义了一个名为customDrawable的属性,用于引用可绘制资源。在自定义视图的构造函数中,通过getDrawable()方法获取到Drawable对象,并在onDraw()方法中将其绘制到画布上。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

仿bilibili刷新按钮实现

中,文字绘制跟其它绘制是不同,例如,圆角矩形和旋转图标的绘制起点是左上角,而文字则是按文字左下字为起点,也就是按基线(Baseline)来绘制,故需要得到基线起点坐标。 ?...ObjectAnimator使用也不复杂,这里就不详细介绍了。来看下动画效果吧: ? 4自定义属性 一个自定义控件,是不能把属性值写死控件里,所以我们需要自定义属性,外界获取这些属性值。...1)属性文件编写 attrs.xml中编写如下代码: ? 2)属性值获取 控件第三个构造函数中获取这些属性值: ?...这里有一点需要留意: ta.getDimension(属性id, 默认值) 通过TypedArray对象可以外界到值会根据单位(如:dp、sp)不同自动转换成px,但默认值单位是一定,为px...,所以为了符合规范,不要直接使用px,所以需要手动做个转换。

1.5K80

我肝了3个月终于整理出了这份超全面的《Android面试题及解析》,面试不再怕了!

基础到架构进阶,包含了腾讯、百度、小米、阿里、乐、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到题目,涵盖了初中高级技术点。 文章中所列主要为大纲部分,详细内容自行获取哈!...都使用过哪些自定义控件(★★★★) 3. 自定义控件:绘制圆环实现过程(★★) 4. 自定义控件:摩天轮实现过程(★★) 5....(部分面试题展示,完整题目及答案解析可在文末获取) 1. android 事件分发机制 2. android view 绘制机制和加载过程 3. android 四大组件加载过程,请详细介绍下 4....Activity 启动模式 …… 51.内存泄漏 52.过度绘制、卡顿优化 53. apk 瘦身 54. ANR 形成,各个组件出现 ARN 时间限制是多少?...…… 现在面试问很多东西,都是原理。 要想成为高级工程师,必须掌握许多基础知识。在工作中,这些原理可以极大帮助我们理解技术,面试中,更是可以帮助我们应对大厂面试官刁难。

1K30
  • Android开发仿bilibili刷新按钮实现代码

    本系列将记录我(android端)开发过程中一些我觉得有必要记录功能实现而已,并不是完整0到1完整教程,若个别看官大爷觉得不好请出门左拐谢谢。 以下是该项目将会完成功能。...中,文字绘制跟其它绘制是不同,例如,圆角矩形和旋转图标的绘制起点是左上角,而文字则是按文字左下字为起点,也就是按基线(Baseline)来绘制,故需要得到基线起点坐标。 ?...ObjectAnimator使用也不复杂,这里就不详细介绍了。来看下动画效果吧: ? 4自定义属性 一个自定义控件,是不能把属性值写死控件里,所以我们需要自定义属性,外界获取这些属性值。...(); ... } } 这里有一点需要留意: ta.getDimension(属性id, 默认值) 1 2 通过TypedArray对象可以外界到值会根据单位(如:dp、sp...)不同自动转换成px,但默认值单位是一定,为px,所以为了符合规范,不要直接使用px,所以需要手动做个转换。

    92520

    Android自定义EditText:手把手教你做一款含一键删除&自定义样式SuperEditText

    特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一键删除功能 需求中非常常见,现将其封装后更加方便使用 自定义样式程度高(比自带强大 & 方便...),不复杂却能满足一般EditText使用需求 自定义样式如下:(注:该样式设置是系统自带 API 所不具备) ?...} /** * 步骤4:对删除图标区域设置点击事件,即"点击 = 清空搜索框内容" * 原理:当手指抬起位置删除图标的区域,即视为点击了删除图标 = 清空搜索框内容...、宽和高等信息 // x = 组件容器X轴起点、y = 组件容器Y轴起点、width=组件长度、height = 组件高度 // b....下一篇文章我将继续进行一些 简单 & 实用自定义View实例讲解,有兴趣可以继续关注Carson_Ho开发笔记 ---- 请帮顶 或 评论点赞!因为你鼓励是我写作最大动力!

    1.8K30

    面试一线互联网公司Android中高级开发工程师必问面试题集锦

    前言 今天我们说说中高级开发工程师岗位在大公司应聘中复习方向: 用人单位对中高级开发工程师方面的要求 已经火了这么多年了。现在如果还从事开发,基本都是中高级开发工程师。...那么用人单位在对中高级开发工程师方面的要求要达到什么程度呢? 回答这个问题之前,我先说一下中高级开发工程师薪资水平吧。至于为什么,先说这个。因为我怕接下来你没有动力去看,去学习,去提高。...不过笔试其实真的没有多大关系,主要还是面试 面试官一般会最简单入手(博主本人因为是自学4个月就自学完了Java。所以基础很差,也最怕问这些。),比如会问object有哪些方法?...一、java方面 1.接口意义(百度) 2.抽象类意义(乐) 3.内部类作用(百度,乐) 4.父类静态方法能否被子类重写,为什么?...(乐、小米) 总结 目前想换一个18K以上,尤其是想拿到25K以上;想从一个初级开发工程师进阶到中高级开发

    2.2K40

    专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)?

    ,我们会获得很多数据,这里截取需要进行分析部分: 注:如果运行完命令发现无上图中4个参数,则很可能是手机“GPU呈现模式分析”未打开; 在手机开发者选项中,找到“GPU呈现模式分析”,选择“...adb shell dumpsys gfxinfo中”,如果是华为或荣耀手机,则选择“屏幕显示为线型图”: 2.如上图信息表示了每一帧系统中四个阶段: Draw: 表示Java中创建显示列表部分中...,其实是实际显示帧数据后台缓存区与前台缓冲区交换后并将前台缓冲区内容显示到屏幕时间 将上面的四个时间加起来就是绘制一帧所需要时间,如果超过了16.67就表示掉帧了 说明 Android 定义了流畅度数据标准...每一帧系统中分4个阶段,4个阶段总和超过16.67(1秒60帧,算下来平均1帧间隔就约是16.67ms)就认为丢帧。...这个定义 Android6.0 以前是一定,但是现在已经没有固定标准了,因为目前系统有3层缓存机制,加上硬件进步,即使超过16.67,也不一定会出现卡顿感。

    1.5K32

    测试 App 流畅度

    ,这里截取需要进行分析部分: 注:如果运行完命令发现无上图中4个参数,则很可能是手机“GPU呈现模式分析”未打开; 2.如上图信息表示了每一帧系统中四个阶段: Draw: 表示Java中创建显示列表部分中...,其实是实际显示帧数据后台缓存区与前台缓冲区交换后并将前台缓冲区内容显示到屏幕时间 将上面的四个时间加起来就是绘制一帧所需要时间,如果超过了16.67就表示掉帧了 Android 定义了流畅度数据标准...每一帧系统中分4个阶段,4个阶段总和超过16.67(1秒60帧,算下来平均1帧间隔就约是16.67ms)就认为丢帧。...这个定义 Android6.0 以前是一定,但是现在已经没有固定标准了,因为目前系统有3层缓存机制,加上硬件进步,即使超过16.67,也不一定会出现卡顿感。...所以这个数据测试时作为一种对比和相对衡量标准,也可根据需求自定义标准。

    56220

    D1-N角星开始论述自定义控件

    零、前言 1.个人对绘制逻辑感到繁琐,自己封装了一个绘图框架 2.自定义控件绘制流程都基于我这个库,详见:开源计划之--Android绘图库--LogicCanvas 3.星星控件目的:...总结自定义控件流程 4.功能:自定义星星角数,高矮,胖瘦,填充与否, --- 一、准备 1.新建StarView继承自View,重写构造方法 这里为了方便,准备了dp转px方法 一参数构造用于直接...我们常用TextView、ImageView等都可以xml里配置相关属性,就是自定义属性 第一步,明确自己自定义属性有哪些,最后先想好名字 第二步,res/values文件夹下创建attrs.xml...[点击事件升级.gif] 这是一个非常简单自定义控件,作为自定义控件第一篇,总结一下绘制流程还是挺不错 自定义控件还有很多很多坑,来和我一起填吧。...2.连接传送门: 更多技术欢迎访问:技术栈 我github地址:欢迎star 简书首发,腾讯云+社区同步更新 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994

    42840

    Android实现仿iOS图标下载View动画效果

    原文:巴士 前言 最近项目需要接入环信客服 SDK ,我配合这同事完成,其中我负责文件下载这部分。...顿时有个想法,要是两张图片重叠部分能被抠出掉,也就是变成全透明,那岂不是非常容易就实现了。 圆环和弧既然是盖了背景,理当直接变成透明。那 Android 有对应处理 API吗?答案是肯定。 ...设置背景颜色,样式为填充,绘制圆角矩形 绘制圆环 paint.setColor(Color.RED); paint.setStrokeWidth(mStrokeWidth); // 采用 clear...canvas.drawArc(rectF, -90, sweepAngle, true, paint);// 记得设置为 null 不然会没有效果paint.setXfermode(null); 根据当前进度绘制相对应弧...)*Dc] */ SRC_OVER (3), /** [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc] */ DST_OVER (4)

    1.6K00

    你也可以自己写一个可爱 & 小资风格Android加载等待自定义View

    具体请看文章:Android开源控件:一款你不可错过可爱 & 小资风格加载等待自定义View 3.3 二次开发成本低 本项目已在 Github开源:Kawaii_LoadingView 详细源码分析文档...:具体请看本文第6节 所以,在其做二次开发 & 定制化成本非常低。...贡献代码 希望你们能和我一起完善这款清新 & 小资风格自定义控件,具体请看:贡献代码说明 关于该开源项目的意见 & 建议可在Issue提出。欢迎 Star !...总结 相信你一定会喜欢 这款可爱、清新 & 小资风格加载等待自定义控件 已在Github开源:Kawaii_LoadingView,欢迎 Star ! ?...此外,我还有一些有趣自定义View实例讲解,有兴趣可以继续关注Carson_Ho开发笔记 a. 手把手教你实现一个简单好用搜索框(含历史搜索记录) b.

    53920

    Android 自定义View之随机数验证码(仿写鸿洋)

    步骤 先分析一下上图中效果: 带颜色矩形背景 居中文本 比较简单,老手稍微想一下就已经有思路了: 1.自定义属性 2.添加构造方法 3.构造里获取自定义样式 4.重写onDraw计算坐标绘制 5...第一个构造比如我们可以是new创建,第二个是xml中默认调用,我们第三个构造中去获取自定义属性。..., bounds) } 通过obtainStyledAttributes获取自定义属性,返回一个TypedArray,这里用到了我们attrs.xml文件中声明样式(R.styleable.RandomTextView...里面显示绘制了一个YELLOW颜色矩形背景,然后绘制了一个自定义属性颜色居中文本。...总结 其实看效果的话,还不如TextView来简单,而且TextView也可以轻松实现效果图中效果。 所以本文重点并不是实现效果,而是学习理解自定义View以及其绘制流程。

    31720

    Android 自定义View 之 简易输入框

    前言   日常工作开发中,我们时长会遇到各种各样需求,不部分需求是可以通过Android 原生View来解决,而有一些是无法解决,这时候我们就需要自定义View,我们先来看看本文中这个自定义View...② XML样式   设置样式之前需要先知道我们自定义View要做什么,这是一个简易输入框,可以用来做验证码输入或者密码输入,输入框4~6个,主要就是数字输入,attrs.xml文件中,里面我们可以写自定义样式...绘制文字   现在方框有了,而文字绘制我们需要绘制方框中间,自定义View中新增一个drawText()方法。...:   这个布局使用上来说就很简单了,基本一目了然,这里我们可以写一个接口用来处理键盘上按钮点击事件。...}   这里代码就很简单,获取View,然后点击按钮时获取输入框值,获取到值显示在按钮,下面运行测试一下。

    1.1K40

    Android自定义View实现多边形统计图示例代码

    主要是文字是默认自左向右,最上面和最先面的文字倒是没啥,左侧和右侧文字就会出现问题了,文字会绘制到多边形,看起来特别难受。...这里我解决办法就是前面图中看到,让字跟着多边形顶点位置一起旋转。.../* 绘制文字 */ private void drawText(Canvas canvas) { if (pointName == null) { return; } //绘制文字难点在于无法最好适配屏幕位置...,会发生难以控制偏倚 for (int i = 0; i < pointName.size(); i++) { //解决办法就是让文字不同角度也发生旋转,并且x轴减去一定数值来保证正确位置...总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ZaLou.Cn支持。

    63020

    阴影实现

    ——狄德罗 首先网上找了一圈方案,要么是用UI切图方式,要么是说用背景或者自带阴影,这篇文章也说了 阴影组件化,解决不统一问题 - 掘金 UI切图/制作点9图方式: 这种方式应该是完美还原蓝湖设计图方式...,但不是技术角度实现 下面还有几个 1. elevation(组件属性) 优点:绘制效率高,使用自带api不用添加多余drawable文件,并且支持 translationZ 动画方便实现点击动画效果...Shape(作为背景绘制所以会占位,它绘制原理是一层层由深到浅形状作为阴影) 优点:颜色方向可控制;占位 缺点:没有模糊效果阴影不自然有点生硬(较弱阴影不太容易看出来); 注意:占位阴影要考虑预留出阴影空间...; 4....自定义View 理论我们想要阴影效果都可以实现,但是如果脱离了系统原生属性就需要考虑太多; 自定义阴影针对特殊载体样式和阴影,代码实现较为复杂,绘制成本较高,非必要情况下不建议; 作者:owlling

    7710

    ICSE 2020获奖论文:ANU陈洁珊等人提出LabelDroid,帮助障群体打开智能新「」界

    早在此前,手机平台便推出了自带屏幕阅读器帮助障人群更好地使用手机,比如系统 TalkBack,IOS 系统 VoiceOver。...下面是系统 TalkBack 一个使用案例: 案例中可以看出,系统自带屏幕阅读器可以轻松地播报文字内容,但是无法对所有图像等非文字按钮都做出正确有效反应。这是为什么呢?...Play 中爬取了 10,408 个软件来研究当今手机软件 Accessibility 情况。...其他类别软件情况相对较好,但也仍有 30% 软件基本无法使用。 ? 图 4:不同类别下软件缺失率分布。 那么或许由于市场竞争激烈,很多软件没心思考虑到特殊群体。...第一种情况,有的开发者倾向于写过长冗余描述(E1-A1, E2-A1);有的开发者则反之使用过于简短缺乏足够信息描述(E2-A2/A3);还有的开发者会写一些摸棱两描述(E4 – A2/3);

    69130

    Android  View自定义锁屏图案

    前言 Android 自定义 View 技能是成为高级工程师所必备,笔者觉得自定义 View 没有什么捷径走,唯有经常练习才能解决产品需求。..."success" : "fail", Toast.LENGTH_SHORT).show(); } }); 实现思路 以默认状态绘制 rowCount * rowCount 个圆,外圆颜色需要在内圆颜色加上一定透明度... onTouchEvent() 方法中,判断当前触摸点与各个圆圆心距离是否小于圆半径,决定各个圆此时处于哪个状态(normal,move,error),调用 invalidate() 重新绘制,更新颜色...--每行每列圆个数-- </declare-styleable </resources 获取自定义属性 public LockView(Context context) { this(...,更新该圆状态,重新绘制时,绘制成新颜色。

    92310

    微信小程序蓝牙开发,微信小程序 蓝牙通讯

    01.首先看下客户ble设备服务文档:(本部分需要有点蓝牙基础,调试过程中可以用软件nRF Connect软件来执行测试命令)UUID名称特征属性说明FFF0灯控服务FFF1灯控命令WriteAPP...wx.openBluetoothAdapter({  success: function (res) {    //开启成功,继续搜索操作  },  fail:function(){    //开启失败,后台监听状态处理,注意:系统中手动开启蓝牙可以监听...res) {        //打印获取设备列表,此处可以获取到设备广播消息        //设备deviceId字段要非常注意,返回硬件mac地址,苹果返回是uuid        ...//当然无论返回什么都不影响你使用小程序蓝牙api        //但是如果你服务uuid需要你提供硬件mac地址交互的话需要做兼容处理        //例如你可以要求蓝牙方广播数据中保存硬件mac...就是一步获取设备列表deviceId属性,不用关心这个字段值,不关心是还是苹果  deviceId: deviceId,  success: function (res) {    console.log

    38110

    Android编程基于自定义view实现公章效果示例【附源码下载】

    分享给大家供大家参考,具体如下: 上次去一个公司面试,面试官问了一个题,怎么用android自定义view实现一个公章效果,据说这是华为之前面试题,我想了下,要是公章效果,最外层是一个圆,里面是一个五角星...,所以我们就可以给文字设置一个相应绘制区域,使其绘制文字都在这个区域内, path.addArc(oval,-(firstrad-textPadding*i/2), textPadding); 接下来我们只需要在这个区域内把文字绘制上去就行了...好,下面是全部代码: 首先继承自View,我们构造里面初始化,同样为了方便程序扩展性,我们用自定义属性, <declare-styleable name="Seal" <attr name="...(String.valueOf(circleText.charAt(i)), path, -(float) (radius/3),(float) (radius/3), paint); } } 最后<em>在</em>我们需要<em>的</em>视<em>图中</em>引用下就好了...更多关于Android相关<em>内容</em>感兴趣<em>的</em>读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android

    41130

    Android自定义EditText:手把手教你做一款智能EditText(一键删除、自定义样式)

    特点 对比市面上EditText控件,该控件Super_EditText 特点是: 3.1 功能实用 一键删除功能 需求中非常常见,现将其封装后更加方便使用 自定义样式程度高(比自带强大 & 方便...),不复杂却能满足一般EditText使用需求 自定义样式如下:(注:该样式设置是系统自带 API 所不具备) 3.2 使用简单 仅需要简单xml属性配置 具体请看文章:Android自定义...(x,y,width,height),即必须设置过初始位置、宽和高等信息 // x:组件容器X轴起点 y:组件容器Y轴起点 width:组件长度 height:组件高度...} /** * 步骤4:对删除图标区域设置点击事件,即"点击 = 清空搜索框内容" * 原理:当手指抬起位置删除图标的区域,即视为点击了删除图标 = 清空搜索框内容...、宽和高等信息 // x = 组件容器X轴起点、y = 组件容器Y轴起点、width=组件长度、height = 组件高度 // b.

    1.2K30

    专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)

    q-header-list=&q-url-param-list=&q-signature=ea209d44d3a1d73bcab19865a65592333b2a2811] 2.如上图信息表示了每一帧系统中四个阶段...:表示把一帧数据发送到屏幕上排版显示实际花费时间,其实是实际显示帧数据后台缓存区与前台缓冲区交换后并将前台缓冲区内容显示到屏幕时间 将上面的四个时间加起来就是绘制一帧所需要时间,如果超过了16.67...每一帧系统中分4个阶段,4个阶段总和超过16.67(1秒60帧,算下来平均1帧间隔就约是16.67ms)就认为丢帧。...这个定义 Android6.0 以前是一定,但是现在已经没有固定标准了,因为目前系统有3层缓存机制,加上硬件进步,即使超过16.67,也不一定会出现卡顿感。...所以这个数据测试时作为一种对比和相对衡量标准,也可根据需求自定义标准。

    1.5K20
    领券