View 自定义 - 坐标系、位置获取

Android 视图坐标系 1. 屏幕坐标系区域划分 先看看 android 的屏幕规划图。 可以很明显的看出来, 屏幕的区域划分作用在某一个位置 获取当前屏幕状态信息 APIS // 获取当前屏幕的宽/高。 分辨率 DisplayMetrics displayMetrics = new DisplayMetrics(); Activity.getWindowManager().getDefaultDisplay().... 阅读详情

一、坐标系

屏幕的左上角为坐标原点,向右为x轴正向,向下为y轴正向。

二、角度 Angle

注意:区别于一般的数学坐标系。

三、弧度 Radian

角度和弧度都是描述角的一种度量单位。

四、位置描述

子组件到父容器距离getLeft()自身左边到父容器左边距离。
getRight()自身右边到父容器左边距离。
getTop()自身上边到父容器顶部距离。
getBottom()自身底部到父容器顶部距离。
子组件自身宽高getWidth()自身宽度,等同于 getRight() - getLeft()
getHeight()自身高度,等同于 getBottom() - getTop()
触摸点到屏幕距离getRawX()触摸点到屏幕的x轴距离。
getRawY()触摸点到屏幕的y轴距离。

五、颜色 Color

5.1 定义颜色

5.1.1 xml中定义

res → values → colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    //红色
    <color name="red">#FFFF0000</color>
    <color name="red50">#80FF0000</color>
    //蓝色
    <color name="blue">#FF0000FF</color>
    <color name="blue50">#800000FF</color>
    //黑色
    <color name="black">#FF000000</color>
    <color name="black50">#80000000</color>
    //白色
    <color name="white">#FFFFFFFF</color>
    <color name="white50">#80FFFFFF</color>
    //透明
    <color name="transparent">#00FFFFFF</color>
</resources>

5.1.2 代码中定义

val color1 = Color(0xFFFFFFff)
val color2 = Color(red = 127, green = 255, blue = 0, alpha = 0)
val color3 = Color.Black

5.2 引用颜色

5.2.1 xml中引用

//在style文件中引用
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/red</item>
</style>
//在layout文件中引用
<TextView>
    android:background="@color/red" 
</TextView>    
//在layout文件中创建并使用颜色
<TextView>
    android:background="#ff0000"
</TextView> 

5.2.2 代码中引用

val color1 = resources.getColor(R.color.white, null)
val color2 = getColor(R.color.white)    //API 23+

Android:你要了解的自定义View基础概念都在这里了! 前言: 现组建了一个Android的水友圈,进群可免费领取Android的高级UI及跨平台技术,还有jvm性能优化,APP小程序源码等资料;有从初始Android到Android进阶视频学习,包括Android开源实战,文末有进圈方式。 View基础概念 1. 视图(View) 定义 视图(View)表现为显示在屏幕上的各种视图,如TextView、LinearLayout等。 2. 视图(View) 分类 View主要分为两类: a. 单一视图(View):即一个View,如TextView, 阅读详情

相关推荐

Android应用坐标系统全面详解,安卓app开发软件

说到Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果,所以Android坐标系在整个Android界面中算是盖楼房的尺寸草图,下面我们就来看看这些相关的概念。 2-1 Android屏幕区域划分 我们先看一副图来了解一下Android屏幕的区域划分(关于这个东西的深入探讨你可以看下《Android应用setContentView与LayoutInflater加载解析机制源码分析 》一文,那儿给出了部分原理的解释),如下

m0_66264588的博客 967

安卓自定义View基础-坐标系

一.屏幕坐标系和数学坐标系的区别由于移动设备一般定义屏幕左上角为坐标原点,向右为x轴增大方向,向下为y轴增大方向, 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的

like_eat_apple的博客 478

【分布式系统学习】CAP原理详解

概述:互联网最重要任务莫过于海量数据处理,即大规模分布式系统,分布式是互联网的核心技术!!!如上所述,分布式系统是无法同时满足CAP三个特性的。1.Atomicity(原子性)一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。2.Consistency(一致性)在事务开始之前和事务结束以后,数据库的完整性没有被破坏。3.Isolation(隔离性)

大龄烤红薯的博客 5024

相机标定-----四个坐标系的转换关系

【相机标定】四个坐标系之间的变换关系 世界坐标系,相机坐标系,图像物理坐标系,像素坐标系之间的关系: 首先看下几个坐标系在放在一块的样子: 1:世界坐标系:根据情况而定,可以表示任何物体,此时是由于相机而引入的。单位m。 2:相机坐标系:以摄像机光心为原点(在针孔模型中也就是针孔为关心),z轴与光轴重合也就是z轴指向相机的前方(也就是与成像平面垂直),x轴与y轴的正方向与物体坐标系平行,其...

qq_28057379的博客 1401

HFSS实战(二)——精准仿真高速PCB差分线的信号完整性

本文深入探讨了使用HFSS进行高速PCB差分线信号完整性仿真的关键技术与实战经验。从设计文件导入、模型裁剪到差分端口设置,详细解析了精准仿真的全流程,特别强调了材料特性和3D电磁场仿真在解决微带线损耗等问题中的重要性。文章还提供了常见问题排查指南和效率优化技巧,帮助工程师提升高速PCB设计的仿真精度与效率。

weixin_38170829的博客 574

新一代XMOS会议四麦方案主控芯片 XVF3800

2023年,知名的音频芯片制造厂商 XMOS 正式发布了新一代会议麦阵芯片片 XVF3800 ,这款芯片采用最先进的四麦音频算法,可在嘈杂的环境中提供高质量语音,算法支持圆形、条形阵列,可根据应用场景组成不同的产品形态。传统的麦阵解决方案,不仅需要捕捉会议中的人声,也会同时捕捉环境中的其他噪声,而 XMOS 先进的语音算法解决了这一问题。声学回声消除功能可消除麦克风音频输入的回声,同时减少远端回声,使 XVF3800 能提取清晰的语音信号。• 180度拾音条形麦克风阵列。• 360度拾音环形麦克风阵列。

PawPaw_electron的博客 785

cesium中各种类型坐标转换

【代码】cesium中各个坐标。

2774

Android So加载机制分析----基于Android14源码

本文深入分析Android 14系统中SO(共享库)的两种加载机制:System.loadLibrary()和System.load()。前者通过ClassLoader查找标准路径加载,后者直接加载指定路径的SO文件。文档详细追踪了从Java层到动态链接器的完整加载链路,包括ClassLoader路径查找、JNI桥接、ART虚拟机处理以及底层linker的符号解析和重定位过程。同时还分析了Namespace隔离、JNI_OnLoad机制等核心内容,为开发者提供全面的SO加载技术解析和问题排查指南。

保持专注,保持热爱 350

Android View的坐标获取详解以及动画坐标分析

在平面图形中,图形都是由点坐标确定的。同样,Android的设备屏幕也是一个,如果非3D图形,正常的view就是一个二维坐标屏幕的左上角的坐标A(0,0),如果屏幕的宽为:width,高:height 那么右下角的坐标是D(width,height)坐标的顶点从A点,向右和向下两个方向延伸。所有横坐标为X轴,中坐标是Y轴,变成坐标。

3431

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 559

Android 13 RK3588 编译烧写实录全程

本文详细记录了RK3588主板在Android 13系统下的各项功能测试与编译过程。主要内容包括:1)网络功能测试(以太网、WiFi、蓝牙连接);2)外设接口测试(耳机、麦克风、USB、TF卡);3)硬件功能验证(RTC时钟、ADC采样、MIPI摄像头);4)系统设置(手势导航、开发者选项);5)Android 13 SDK编译环境搭建与源码获取方法。通过图文并茂的方式展示了各功能的配置方法、操作步骤和测试结果,为开发者提供了全面的参考指南。

hnjzfwy的博客 239

Android自定义View(二)-Layout原理篇

Android自定义View通常需要经过measure、layout和draw过程,如果你没有了解过measure过程,可以先看看这篇文章。 一、Layout的作用:计算视图的位置,即Left、Top、Right、Bottom四点的位置 二、layout过程:跟measure类似,layout也会根据View的类型分成两种情况进行处理。 View类型 layout过程 单一View...

柚子君的小窝 2368

从苏宁电器到卡巴斯基(第二部)第01篇:我在卡巴的日子 I

聊聊行业薪酬 我相信不论是谁,如果是入职一家新的公司,那么他最想知道的一件事情就是待遇情况了。这里既包含每月实际能到手多少钱,又包括五险一金是否齐全以及是按照高标准还是低标准缴纳。另外,如果是入职IT公司,还会在意年终奖有多少,毕竟某些富裕的IT企业,每到年末就会以此制造新闻来博取大家的关注,以彰显自身的实力。 一言以蔽之,待遇问题也就是年收入究竟会有多少,也是我们进入职场的人喜欢相互打听的问题。比如我研究生那届最厉害的一位同学,签了A公司的算法岗位,年薪30W+(税前,下同),在当时的我看来就是天价了

Gleam的专栏 1226

【5年Android从零复盘系列之六】Android自定义View(1):基础详解(图文)

1.基础一:坐标计算 1.1 Android窗口坐标系计算以屏幕左上角为原点, 向右为X轴正向,向下为Y轴正向 1.2 View坐标系 【注意获取的坐标是像素值,不是dp值】 【注意获取的坐标是像素值,不是dp值】 【注意获取的坐标是像素值,不是dp值】 //获取View内部相对的坐标值(距离) getX()、getY() //获取View相对父View的相对坐标值(距离) getLeft()、getTop()、getRight()、getBottom() //获取的是屏幕中的实际坐标值(距离) getR

Cupster 4682

第四章节 Qt字符串QString详解

QString 的使用方式和 C++标准库的 std::string 字符串的非常相似。

m0_65635427的博客 890

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 自定义位置,Android:你要了解的自定义View基础概念都在这里了!

原标题:Android:你要了解的自定义View基础概念都在这里了!本文作者作者:carsonho链接:本文转载自「carsonho」前言自定义View原理是Android开发者必须了解的基础,在了解自定义View之前,你需要有一定的知识储备。本文将全面解析关于自定义View中的所有知识基础。1. 视图(View)定义视图(View)表现为显示在屏幕上的各种视图,如TextView、LinearL...

weixin_30268555的博客 308

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android以view建坐标系,android自定义View——坐标系

在开发过程中有的时候我们会实现一些特殊功能,如组件滑动到一定距离隐藏或显示、图片置顶等等,这个时候view的坐标就派上了用场了;同样在自定义控件的时候,坐标系也是经常用到的,下面记录一下在复习过程中view坐标系的一些知识。目录view的四个顶点坐标view的x、y、translationX、translationY坐标MotionEvent获取坐标 1. view的四个顶点坐标view的位置主...

weixin_39539807的博客 309

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

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

view体系

View体系 View体系 首先看一下图,对view体系有一个基本的了解: View是Android所有控件的基类,同时ViewGroup也是继承自View。 Android中的坐标系 Android坐标系 在Android中,将屏幕的左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,原点向下是Y轴正方向。 视图坐标系 View如何获取自身宽高: getHeight():获...

C200X的博客 367

android fragment中引入自定义view_图解 Android 开发中的 View 对象,补补基础吧!

Android 中 View 的分类单一视图:如 TextView / ImageView 等某个特指的View视图组:如LinearLayout / RelativeLayout 等多个单一视图组成的ViewGroupAndroid 中 View 的简介View 类是 Android 中所有组件的基类,包括ViewGroupAndroid 中所有组件都由 View、ViewGroup 组成Vie...

weixin_35911307的博客 737

Android 自定义View基础知识

Android中的控件分为两类,要么是继承View类的控件,要么是继承ViewGroup类的控件,而ViewGroup类也继承了ViewGroup类。1.View的四个构造方法自定义View的时候,继承View类,至少需要实现一个构造方法。public class CircleView extends View { //如果View是在Java代码中new的,则调用第一个构造方法 ...

WillLiaowh的博客 313

View的事件体系

一、View基础知识 1、什么是View: View是一种界面层的控件的一种抽象,它代表了一个控件。 ViewGroup为控件组。 View中也可以包含多个控件,形成控件树。 ImageButton是一个View,LinearLayout是一个View,也是一个ViewGroup。 2、View的位置参数: View的位置对应View的

我的专栏 3047

Android整理笔记——1.3.2.1自定义view的实现 基础篇

(一)自定义View-基础篇  目录    1. View的分类 视图View主要分为两类: 类别 解释 特点 单一视图 即一个View,如TextView 不包含子View 视图组 即多个View组成的ViewGroup,如LinearLayout 包含子View 2. View类简介 View类是Android中各种组件的基类,如...

墨轩 339

自定义view(1)

要想学习自定义view,首先得知道一些基本的知识点。 1、下面4个方法的作用是:获得 当前控件在父控件的坐标。 int top = tv.getTop(); int bottom = tv.getBottom(); int left = tv.getLeft(); int right = tv.getRight(); 2、下面4个方法是获取点击屏幕的触摸点的坐标。 ...

ShandowGod的博客 67

Android中View坐标划分

Android坐标系的理解直接关系到后面你Android进阶部分的学习,如果没有夯实的基础,你自定义View时就会有种欲求不满,欲罢不能——想搞懂却又觉得难,想放弃又觉得舍不得。Android中的坐标系以及获取坐标的方法 Android中有两种坐标系,分别称之为Android坐标系和视图坐标系。而对应的也有一些相关的方法可以获取坐标系中的坐标值。只有搞清楚这些区别,才能在实现的时候不至于出错或者得...

maxiaoyin111111的博客 609

今日面试不会的题目

本文章内容大多数绝大多数来自于@刘望舒大神的博客

我想拥有一份工作,我热爱的工作 345
上一篇: View 自定义 - 绘制前的准备 DecorView
下一篇: View 自定义 - 概览
Jomurphys
博客等级 码龄9年 1768粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值