【Android笔记】Android的坐标、尺寸

实现仿有道云笔记原笔迹手写功能的安卓应用项目 在移动互联网的浪潮下,安卓应用开发已然成为IT行业的重要分支。本章旨在为读者提供一个全面的安卓应用开发概览。我们将从安卓平台的架构和特点开始,探讨其开发环境、开发工具链以及应用生命周期管理。在Android平台上,图形绘制是通过Canvas类来完成的,它能够提供2D绘图的环境。在这一部分,我们将深入了解Canvas类以及它提供的各种绘图API,包括但不限于绘图属性设置、基本图形绘制以及路径操作等。Canvas类中提供的基础API主要包括:- 绘制线条(drawLine- 绘制矩形( 阅读详情

一、单位介绍

dip:device independent pixels  (设备独立像素),与dp相同。不同设备有不同的显示效果。

dp=dip, px = dpi / 160 * dp ,1pt = dpi/72 sp

ppi:pixels per inch,表示每英寸显示屏所拥有的像素(pixel)数目。ppi = √(X²+Y²)/ Z (X:长度像素数;Y:宽度像素数;Z:屏幕尺寸)。

dpi:dots per inch,dot是一个物理的像素点,一个pixel可能由多个dot组成。dpi和ppi经常被混用,但它们的含义并不相同

px:pixels(像素),即屏幕上的点。不同设备显示效果相同。

pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业;

sp:scaled pixels(放大像素),主要用于字体显示best for textsize。查看TextView的源码可知 Android 默认使用 sp 作为字号单位。

density:即dpi / 160

分辨率:表示整个屏是多少个像素点,如小米4是1080 * 1920。


apk的资源包中, 

当屏幕dpi=240时,使用hdpi标签的资源 

当屏幕dpi=160时,使用mdpi标签的资源 

当屏幕dpi=120时,使用ldpi标签的资源。 


二、用DisplayMetrics获取设备尺寸

代码片断如下:

方法一:

private static int ScreenW, ScreenH;
DisplayMetrics metrics = new DisplayMetrics(); // 用于存储屏幕尺寸等信息,好比一个篮子,此时是空的
getWindowManager().getDefaultDisplay().getMetrics(metrics); // 把上述信息存入metrics中
ScreenW = metrics.widthPixels; // 读取信息
ScreenH = metrics.heightPixels;

方法二:

private static int ScreenW, ScreenH;
DisplayMetrics metrics = getResources().getDisplayMetrics();
ScreenW = metrics.widthPixels; // 读取信息
ScreenH = metrics.heightPixels;

用此法获取的DisplayMetrics对象包含了很多属性,用小米4测试,将DisplayMetrics对象的所有属性输出:

widthPixels:1080,heightPixels:1920
density:3.0
densityDpi:480
scaledDensity:3.0
xdpi:449.704, ydpi:447.412

根据开头的公式计算得,此手机屏幕宽度为1080 / 3 = 360 dp,高度为1920 / 3 = 640 dp

三、获取组件的位置

// 获取当前组件在手机屏幕上的位置,单位为px
// 必须是2个元素的数组
int[] location = new int[2];
view.getLocationOnScreen(location);
view.getLocationInWindow(location);
网上搜到的资料说上面两个方法的区别在于是否包含通知栏。但是我测试了默认情况下这两者获取的数值完全一样。

可能在区别在于弹出窗口中的组件,现在还没有学到那一块,将来顺便做个测试。


四、获取组件的宽度与高度

image2 = (ImageView) findViewById(R.id.imageview_2);
// 用这种方法获取的是像素px
LayoutParams para = image2.getLayoutParams();
imagePara.setText("ImageView的width:" + para.width + "\n" 
        + "ImageView的height:" + para.height);

// 用代码设置组件宽高,xml中如果用其他布局,代码中也应改成相应布局。
image2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT));
// 或者直接填入像素px值
image2.setLayoutParams(new LinearLayout.LayoutParams(320, 640));


Android 屏幕坐标 http://blog.youkuaiyun.com/csdnyuandaimaxuexi/article/details/49425861 博客地址:http://blog.youkuaiyun.com/csdnyuandaimaxuexi/article/details/49425861 立即下载

相关推荐

android 自定义刻度尺工具

该工程实现了android刻度尺的工程,封装的很好,可随意移动添加,不懂的可以咨询

Android屏幕长宽以及控件坐标获取

Android上获取屏幕长宽、控件的位置时不时就会用到,每次都要把所有API运行下看下那个是想要的,太没效率,这里总结下常用的获取方式。获取屏幕的长宽是系统的固有的,怎么都不会改变的,主要是要获取到在屏幕上的status bar Activity 中的titil以及实际的decorView的位置和内部的控件的位置,这里要注意的一点是Activity一般是占满整个屏幕的所以在Activity上的坐

蜗牛壳 973

MFC工具栏增加EditBox和Button

1. 在资源视图中增加EditBox, Button控件,ID分别为ID_EDIT_SEED, ID_BTN_SEED 2. 在CMainFrame中增加成员变量 CMFCToolBarEditBoxButton *m_editSeed; CMFCToolBarButton *m_btnSeed; 3. 在CMainFrame::OnCreate中创建控件 m_editSeed = new CMFCToolBarEditBoxButton(ID_EDIT_SEED, GetCmdMgr()-&.

学习是为了探索这个世界的本质 802

android 获取空间坐标系,Android必知必会-获取View坐标和长宽的时机

原标题:Android必知必会-获取View坐标和长宽的时机背景最近要实现一个功能,用到了一些属性动画,需要获取一些View的坐标信息,设计图如下: 这里我使用的是DialogFragment来实现的,可以复用。先贴一下获取View坐标的一些资料:Android View各种尺寸位置相关的方法探究Android获得控件在屏幕中的绝对坐标合适的时机要想获得View的坐标和长宽,必须要等到View绘制...

weixin_29467373的博客 285

Nginx配置Cookie安全属性:HttpOnly、Secure、SameSite实战指南

Cookie是Web应用中维持用户状态的核心机制,其安全配置直接关系到会话管理与身份认证的可靠性。从原理上讲,HttpOnly属性可防止XSS攻击窃取Cookie,Secure属性确保Cookie仅在HTTPS加密连接中传输,而SameSite属性则用于控制跨站请求时Cookie的发送行为,能有效防御CSRF攻击。这些安全属性的技术价值在于构建纵深防御体系,提升应用的整体安全性。在现代浏览器(如Chrome 80+)默认将未明确声明的Cookie视为SameSite=Lax的背景下,正确配置这些属性变得尤为

weixin_33783283的博客 321

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 380

android 坐标转换dp,Android dp和px之间转换 及 获取坐标

dp、px、sp转换1 public class DensityUtil {2 /**3 * 将px值转换为dip或dp值,保证尺寸大小不变4 *5 * @param pxValue6 * @param scale7 * (DisplayMetrics类中属性density)8 */9 public static int px2dip(float pxValue, f...

weixin_33850918的博客 1127

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

一文详解像素、DPI、分辨率之间的关系

像素:是指在由一个数字序列表示的图像中的一个最小单位,称为像素。像素可以用一个数表示,比如一个“0.3兆像素”数码相机,它有额定30万像素;也可以用一对数字表示,例如“640x480显示器”,它表示横向640像素和纵向480像素(就像VGA显示器),因此其总数为640 × 480 = 307,200像素。数字化图像的彩色采样点(例如网页中常用的)也称为像素。由于计算机显示器的类型不同,这些可能和屏幕像素有些区域不是一一对应的。在这种区别很明显的区域,图像文件中的点更接近纹理元素。

QQVQQ的博客 2万+

【100%通过率】华为od统一考试B卷【贪吃蛇】Python 实现

贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。 下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == ‘H’,表示该方格为贪吃蛇的起始位置;若arr[i][j] == ‘F’,表示该方格为食物,若arr[i][j] == ‘E’,表示该方格为空格。贪吃蛇初始长度为1,初始移动方向为向左。

MISAYAONE的博客 1204

华为OD机试真题 新系统 2026-04-19 C语言 实现【8位LED控制器】

有一个8位LED控制器,包含8个LED灯(编号0-7),初始状态全灭,用8位二进制表示为:00000000。控制器可以接收以下三种指令: Lx:L表示点亮操作,x表示LED的编号(0一7),操作得到的结果是:点亮第x个LED灯,把状态设为1。 Dx:D表示熄灭操作,x表示LED的编号(0-7),操作得到的结果是:熄灭第x个LED灯,把状态设为0。 Tx:T表示切换操作,x表示LED的编号(0-7),操作得到的结果是:切换第x个LED灯的状态,若状态为0则变为1,为1则变为0。 现在给定一组指令字符串(0<

MISAYAONE的博客 148

android坐标获取view,[Android学习笔记]获取view的尺寸和坐标

对于UI方面很多时候需要获取它的很多信息,具体情况见view的文档View文档常用方法:获取view的宽高getWidth()getHeight()获取当前view相对于[父元素]坐标系的原点.此点对于当前view而言,是它的左上角点在父元素坐标系中的坐标getX()getY()获取当前view相对于[父元素]坐标系的几个值getLeft()getTop()getRight()getBottom(...

weixin_32676541的博客 346

基于Python的MOOC课程评价爬取与分析系统设计与实现

本文详细介绍了如何使用Python最新技术栈构建一个高效的MOOC课程评价爬取与分析系统。系统采用Scrapy框架结合Selenium实现动态页面抓取,利用PyMySQL进行数据存储,并通过Pandas和Matplotlib实现数据可视化分析。文章从爬虫原理、技术选型、系统设计到代码实现进行全面讲解,为教育工作者改进教学质量提供数据支持。关键词:Python爬虫、MOOC评价分析、Scrapy框架、数据可视化、教学改进。

2201_76125261的博客 1103

[Android学习笔记]获取view的尺寸和坐标

对于UI方面很多时候需要获取它的很多信息,具体情况见view的文档 View文档 http://developer.android.com/training/index.html 常用方法:获取view的宽高getWidth()getHeight() 获取当前view相对于[父元素]坐标系的原点.此点对于当前view而言,是它的左上角点在父元素坐标系中的坐标ge...

weixin_34144450的博客 136

使用 Simulink + Simscape Electrical 对 级联H桥多电平整流器并网功率分配 进行建模与仿真

摘要:本文详细介绍了基于Simulink对级联H桥(CHB)多电平整流器并网功率分配进行建模的方法。内容包括系统组成、功率分配意义、Simulink建模流程、PWM控制策略实现、功率分配算法设计以及仿真分析。重点阐述了主电路搭建、双环控制结构(外环功率分配+内环电流控制)和载波层叠PWM调制技术,并提供了功率分配算法示例。通过优化参数和控制算法,可提升系统性能。该建模方法为电力电子变换器和新能源并网系统研究提供了有效工具。

amy_mhd的博客 251

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android自定义View研究(八)--自定义View总结

关于自定义View就讲到这了,自定义View可以说有很大的用途,在这里我们小小的总结一下,哈哈,也算是一个笔记,方便以后学习。   一、使用自定义View的两种基本方法   1. setContentView(new HelloView(this)); 这种方法是在Activity中直接使用View。 优点:这样布局的话可以很大程度上的自己控制View,绘图灵活,可以很好的控制View

wangyeqiang的专栏 396

深度学习工具包 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")

android自定义尺寸模拟器,Android模拟器尺寸随意改

如果开发人员想在Android开源手机操作系统中进行一些修改的话,需要使用模拟器来进行相应的操作。我们51CTO也在相关文章中向大家介绍过Android模拟器具体作用。那么今天大家可以通过对Android模拟器尺寸的大小修改方法进一步对模拟器有一个深入的了解。Android模拟器提供了4个标准的skin供我们使用,分别对应HVGA(横屏/竖屏)和QVGA(横屏/竖屏),我们只要在启动模拟器时使用 ...

weixin_39596835的博客 2078

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TouchScreen协议让你的安卓手机变成蓝牙HID触摸屏

去年有个哥们找我给他做个手机游戏辅助的软件,要求很简单,自动向玩游戏的安卓手机发送触摸、滑动指令。接到这个任务,我还是挺有把握的,因为在研究HID鼠标协议的时候听说有绝对位置的鼠标这个么东西,心想只要实现绝对定位的鼠标不就行了,于是当时就答应了那哥们,说没问题。经过一段时间的折腾后,我搞出了符合绝对定位鼠标的协议的数据包,在开发机win10上测试很满意,到安卓系统上测试时怎么也不行,顿时就傻眼了。。。最后不得不接受这个事实:安卓系统不支持绝对定位的鼠标。 这里要说明一下,普通鼠标和绝对位置鼠标的区别。

hurst2011的博客 1万+

Android开发学习笔记之坐标、截图

获取控件相对于屏幕的坐标 View view = findViewById(R.id.button1); int[] locations = new int[2]; view.getLocationOnScreen(locations); int x = locations[0]; int y = locations[1]; 截图并保存成png View view = get

hbsfxyxxj的专栏 1120

Android模拟器尺寸随意改

如果开发人员想在Android开源手机操作系统中进行一些修改的话,需要使用模拟器来进行相应的操作。那么今天大家可以通过对Android模拟器尺寸的大小修改方法进一步对模拟器有一个深入的了解。   Android模拟器提供了4个标准的skin供我们使用,分别对应HVGA(横屏/竖屏)和QVGA(横屏/竖屏),我们只要在启动模拟器时使用 -skin <Skin Name>参数就可以载入相应的皮肤。这不

笑傲人生的博客 1699

android 获取绝对坐标,android学习8——获取view在屏幕上的绝对坐标

获取view在屏幕上的绝对坐标在调试时候非常有用.看如下代码public class AbsolutePosActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(new DrawLin...

weixin_39697143的博客 608

Auto.js学习笔记——快速入门:对控件的操作(坐标篇)

问题背景 在一些情况下,即使获取了所需的控件,控件的clickable属性也可能为false,这时就无法直接通过click()点击控件,转而需要通过其坐标来模拟点击动作 另一种情况是,目标控件的text为"确认",但发现页面上有多个"确认",此时也可以基于坐标来限定控件的范围,从而筛选出唯一的所需的控件 不要滥用基于坐标定位的方法 尽管用定位控件的方法对于静态页面十分准确,却无法兼容不同分辨率的设备;同时对于列表页面等动态页面无法达到效果,因此尽量不要使用基于坐标的脚本,以提高通用性。 要获取要点击的位

Insomnia_X的博客 2万+

【Android 控件架构】详解Android控件架构与常用坐标系

前言View在Android的世界中扮演着重要的角色,正是这些控件组成了一个又一个精美的App。View体系是Android界面编程的核心,虽然它不属于四大组件但是它的重要行却毫不逊色,这个系列我会陆续从View的滑动事件、View 的事件反馈、自定义View等多个方面逐步介绍Android View体系。如果能帮助到你,那是我莫大的荣幸。Android控件框架在Android的世界中View是所有

大圣代的技术专栏 1597

Android进阶笔记18:Android 获取Button的高度、宽度、坐标值

1. 问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth、getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单的,不信的话,你可以去试一下,在onCreate里面,你是无法获得长宽值的,始终为0。 1 package com.himi.test; 2 3 import android...

weixin_30786617的博客 188

Android笔记

setTextSize()方法的坑 mText.setTextSize(18); 18sp mText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); 18sp mText.setTextSize(getResources().getDimension(R.dimen.sp_18)); (sp2px(18))sp mText.setTex...

riqthen的博客 262
上一篇: Android开发代码片收集
下一篇: Android Bitmap 全面解析
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值