Android适配解决方案

Android屏幕适配 Android屏幕适配方案 阅读详情

现在电视一般都是1080p,手机大部分也是1080p,但是电视动不动就是42”,手机也就5英寸,但是电视为什么还是这么清晰呢?
昨天就这个问题去找答案,结果最后扯到了Android的适配上,本来吧我觉得自己开发Android这么久了,适配什么的早已不是问题,但是图样图森破啊,还是太年轻。

目录(已经掌握的部分可以跳过):
基础知识(dp,px,dpi,sp,dip)
Android碎片化
不同碎片化问题的解决方案
(一)基础知识

inch 英寸,1inch = 2.54cm

px,像素,1080p后面的这个p就是它了,1920*1080是指这块屏幕上一共有这么多个像素,长边有1920个,短边有1080个像素。

dpi,即dot per inch,指一inch上的像素数量。

dip,设备独立像素,以160dpi为基准,在160dpi的设备上,1dip = 1px;同理,320dip的设备,1dip = 2px。不管什么分辨率的设备,1dip = 1(inch)/160。

dp,同dip

(二)Android碎片化

Android由于其开源的特性,导致碎片化问题严重,其碎片化包括系统碎片化,分辨率碎片化,尺寸碎片化,传感器碎片化,处理器碎片化。我们做适配最多的就是分辨率碎片化和尺寸碎片化,本文主要讲解的也是这两种。

sp,其大小计算同dp,与dp的差别在于它会受系统字体大小设置的影响。

(三)解决方案

分辨率碎片化
a.使用相对布局,不用绝对布局,使用 wrap_content,match_parent

b.使用布局别名,布局别名的使用有两种方式,下面详细说明:

第一种:直接新建不同的layout文件夹,layout-mdpi,layout-land等等,然后再里面分别放上对应的布局文件。

第二种:将所有的布局文件都放到layout文件夹中,然后新建不同的values文件夹来引用这些布局文件,比如values,values-sw720dp等等。
推荐用第二种方式,这种方式还可以对dimens,styles等做适配

c.给不同分辨率的图片,现在1080p和720p的比较多。所以一般给出mdpi,hdpi,xhdpi,xxhdpi。
其对应的分辨率如下:

尺寸dpi倍数给1920*1080
ldpi120-1601x
ldpi160-2401.5x
lhdpi240-3202x0.17
mdpi320-4803x0.25
hdpi480-8005x0.42
xhdpi720-12808x0.67
xxhdpi1080-192012x1
xxxhdpi2160-384024x2

d.合理使用.9图,对于边角不那么多的图片可以用.9图来保证拉伸效果。

e.上面说的方法属于比较常规的适配方案,下面着重说一下尺寸碎片化的处理。Nexus 5是1980*1080,屏幕尺寸是5.0;Nexus 5X分辨率也是1980 * 1080,但是尺寸是5.2。这种情况对于手机来说差别可能不是很大,不是对效果特别追求的话可以忽略,但是对于平板和电视来说尺寸差异就很大了,此时如果再按照分辨率适配的方案来处理,轻则样式错误,重则由于资源问题导致OOM等问题。

对于这种,应该使用尺寸限定符,比如layout-sw320dp,values-sw320dp,意思是设备的最窄边大于等于320dp的时候会使用对应的布局和资源

f.Android官方之前放出了了一个百分比布局的support包,这个包在

AndroidSDK\extras\android\support\percent

这个目录下,布局可以使用百分比来确定位置,谷歌在适配上走了一大进步啊。

g.讲到这里,顺便把国际化命名对应表放在这里,免得用的时候到处找:
用的时候这样:values-ar-rEG , drawable-ar-rEG-hdpi

Arabic, Egypt (ar_rEG) —————————–阿拉伯语,埃及 
Arabic, Israel (ar_rIL) ——————————-阿拉伯语,以色列 
Bulgarian, Bulgaria (bg_rBG) ———————保加利亚语,保加利亚 
Catalan, Spain (ca_rES) —————————加泰隆语,西班牙 
Czech, Czech Republic (cs_rCZ) —————–捷克语,捷克共和国 
Danish, Denmark(da_rDK) ————————丹麦语,丹麦 
German, Austria (de_rAT) ————————-德语,奥地利 
German, Switzerland (de_rCH) ——————-德语,瑞士 
German, Germany (de_rDE) ———————-德语,德国 
German, Liechtenstein (de_rLI) ——————德语,列支敦士登的 
Greek, Greece (el_rGR) —————————-希腊语,希腊 
English, Australia (en_rAU) ————————-英语,澳大利亚 
English, Canada (en_rCA) ————————–英语,加拿大 
English, Britain (en_rGB) —————————-英语,英国 
English, Ireland (en_rIE) —————————–英语,爱尔兰 
English, India (en_rIN) ——————————–英语,印度 
English, New Zealand (en_rNZ) ———————英语,新西兰 
English, Singapore(en_rSG) ————————–英语,新加坡 
English, US (en_rUS) ———————————–英语,美国 
English, Zimbabwe (en_rZA) ————————–英语,津巴布韦 
Spanish (es_rES) —————————————-西班牙 
Spanish, US (es_rUS) ———————————–西班牙语,美国 
Finnish, Finland (fi_rFI) ———————————芬兰语,芬兰 
French, Belgium (fr_rBE) ——————————-法语,比利时 
French, Canada (fr_rCA) ——————————-法语,加拿大 
French, Switzerland (fr_rCH) ————————–法语,瑞士 
French, France (fr_rFR) ——————————–法语,法国 
Hebrew, Israel (he_rIL) ———————————希伯来语,以色列 
Hindi, India (hi_rIN) ————————————-印地语,印度 
Croatian, Croatia (hr_rHR) —————————-克罗地亚语,克罗地亚 
Hungarian, Hungary (hu_rHU) ————————匈牙利语,匈牙利 
Indonesian, Indonesia (id_rID) ————————印尼语,印尼 
Italian, Switzerland (it_rCH) —————————-意大利语,瑞士 
Italian, Italy (it_rIT) —————————————意大利语,意大利 
Japanese (ja_rJP) —————————————-日语 
Korean (ko_rKR) ——————————————朝鲜语 
Lithuanian, Lithuania (lt_rLT) ————————–立陶宛语,立陶宛 
Latvian, Latvia (lv_rLV) ———————————拉托维亚语,拉托维亚 
Norwegian-Bokmol, Norway(nb_rNO) —————挪威语,挪威 
Dutch, Belgium (nl_rBE) ——————————–荷兰语,比利时 
Dutch, Netherlands (nl_rNL) —————————荷兰语,荷兰 
Polish (pl_rPL) ——————————————-波兰 
Portuguese, Brazil (pt_rBR) —————————葡萄牙语,巴西 
Portuguese, Portugal (pt_rPT) ————————葡萄牙语,葡萄牙 
Romanian, Romania (ro_rRO) ————————罗马尼亚语,罗马尼亚 
Russian (ru_rRU) —————————————-俄语 
Slovak, Slovakia (sk_rSK) ——————————斯洛伐克语,斯洛伐克 
Slovenian, Slovenia (sl_rSI) —————————-斯洛文尼亚语,斯洛文尼亚 
Serbian (sr_rRS) —————————————-塞尔维亚语 
Swedish, Sweden (sv_rSE) —————————-瑞典语,瑞典 
Thai, Thailand (th_rTH) ——————————–泰语,泰国 
Tagalog, Philippines (tl_rPH) ————————–菲律宾语,菲律宾 
Turkish, Turkey (tr_rTR) ——————————-土耳其语,土耳其 
Ukrainian, Ukraine (uk_rUA) ————————–联合王国 
Vietnamese, Vietnam (vi_rVN) ———————–越南语,越南 
Chinese, PRC (zh_rCN)——————————–中文,中国 
Chinese, Taiwan (zh_rTW)—————————–中文,台湾

附录:启动图标

L DPI ( Low Density Screen,120 DPI ),其图标大小为 36 x 36 px
M DPI ( Medium Density Screen, 160 DPI ),其图标大小为 48 x 48 px
H DPI ( High Density Screen, 240 DPI ),其图标大小为 72 x 72 px
XH DPI ( Extra-high density screen, 320 DPI ),其图标大小为 96 x 96 px
XXH DPI( xx-high density screen, 480 DPI ),其图标大小为144 x 144 px
XXXH DPI( xxx-high density screen, 640 DPI ),其图标大小为192 x 192 px

最后回答开头提出的问题,是因为电视上每一个像素很大,比手机上的一个像素大得多,所以电视虽然那么大,它也是1080p的。因为一个像素很大,所以你不能凑上去看,不然会看到马赛克哦。

Android用命名含sw的文件夹做屏幕适配原理 适配2k屏 阅读详情

相关推荐

安卓学习,android屏幕适配终极解决方案

infalte(这个参数是通过那个资源文件创建菜单,创建的菜单项添加到那个Menu对象当中) override fun onCreateOptionsMenu(menu: Menu?): Boolean { super.getMenuInflater() menuInflater.inflate(R.menu.main,menu) return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when(item.ite

wqwq_22的博客 396

Android屏幕values-sw适配

一、适配原则Android3.2之后可以通过values后面添加不同的后缀进行适配不同的手机的布局。因为项目中采用了values-sw的方式,所以针对该种方式做了自己的一些调研和研究。 values-sw360dp,sw理解为smallwidth,该最小宽度的计算方式为:屏幕宽度/屏幕密度。其中屏幕宽度为metric.widthPixels/metric.density。通过对一些手机进行打印计算,

nihaomabmt的专栏 1万+

精简高效的Android全屏适配解决方案

根据实际需求,可以选择不同的适配方法来实现更精确的适配效果。使用dimens资源:通过在res/values目录下的dimens.xml文件中定义不同屏幕尺寸和纵横比下的尺寸值,可以在布局文件中引用这些尺寸值,实现适配。全屏适配的目标是使应用程序在各种屏幕尺寸和纵横比下都能正确显示,并且不会出现裁剪、变形或显示过多空白区域的情况。使用限定符:Android提供了一系列限定符(qualifier),可以根据屏幕尺寸、纵横比、像素密度等特征来选择不同的资源文件,从而实现适配。

CodeShiftZ的博客 290

Android 屏幕适配方案汇总

android 屏幕适配方案汇总

qq_17769455的博客 479

自动生成values-sw 值工具类

通过该工具类,可以自动快速生成常见的values-sw"xxx"dp值,完成屏幕适配。也有博主通过工具类已生成的现成值,可以直接拿到项目中用,包含了dp和sp值

汽车氛围灯 PCBA 方案开发:从技术底层解析车载光效的核心逻辑

摘要: 车载氛围灯PCBA方案开发需兼顾性能与车规要求。主控芯片选型应关注运算能力、温度适应性和低功耗(如NXPS32K344、复旦微FM33FG065A)。电路防护需采用TVS二极管等组合设计,满足ISO7637-2浪涌防护标准。通信协议分层应用(CAN+LIN),调光需解决色准与温漂问题,动态灯效通过FIFO队列实现。开发中需进行温度循环、振动、EMC等可靠性测试,细节处理(如三防涂覆)至关重要。该领域开发需熟悉车规标准并积累实车经验。

2401_87454052的博客 1131

Android 适配-最小宽度限定符 values-sw“xxx“dp 适配

Android 适配-最小宽度限定符 values-sw"xxx"dp 适配。 1、以320dp作为最小宽度生成其它最小宽度资源。 320dp基准:<dimen name="size320">320dp</dimen> 存放到默认values文件夹中。 2、生成其它最小宽度资源,比如想得到400dp最小宽度的,则用400/320*(1dp-320dp)。 320dp最小宽度基准: 计算出4000dp最小宽度基准:values-sw400dp 得到values-s.

Hly的博客 4007

Python+Seaborn可视化:双因素方差分析结果这样呈现更专业

本文详细介绍了如何利用Python中的Seaborn和statsmodels库,专业地执行并可视化双因素方差分析结果。通过模拟实验数据,演示了从模型构建、统计检验(包括交互作用分析)到诊断验证的全流程。重点展示了如何使用Seaborn绘制交互效应图、组合分布图及热图,将复杂的统计结果转化为直观、富有洞察力的可视化图表,助力科研论文与商业报告的专业呈现。

weixin_29274969的博客 134

Android 屏幕适配:最全面的解决方案

Android 屏幕适配:最全面的解决方案 - 简书 (jianshu.com)

edmond999的专栏 199

【SerDes】美信GMSL2-CSI调试心得

美信GMSL2加解串器芯片家族广泛应用于车载和工业视觉系统。文章介绍了MAX96717/MAX96717F加串器和MAX96724/MAX96724R解串器的关键特性,包括支持MIPI CSI-2接口、6Gbps传输速率等功能。提供了基于高通平台的demo系统配置和调试步骤,重点阐述了Link Lock、PCLK检测和Video Lock等关键调试环节,并详细说明了像素模式,隧道模式的工作原理及寄存器配置示例。文中还包含通过I2C读写寄存器的具体操作指令,取流freeze可能原因和解决方法。

qq_38089448的博客 2478

Label Studio + SAM2分割半自动标注与yolo11训练

Label Studio + SAM2分割半自动标注与yolo11训练

schFallingCloud 1408

安卓屏幕适配解决方案

安卓屏幕适配解决方案 国内安卓手机众多,由于安卓是开源的,不同厂商都可以定制属于自己的系统,定制这就导致了屏幕的不同意,给开发人员带来了很多困扰啊,屏幕适配就是很明显的一个问题。 我们先引入几个概念 dp px dpi density dp:dp=dip只是说法不同 px:像素 (这个就不用多说了) dpi:每英寸的像素点数。 density:每平方英寸像素点数。 这里给出他们之间的换算公式:...

weixin_41078100的博客 1405

「模型部署系列」ubuntu 使用vllm部署Qwen3-8B模型

解决这个问题的方法正如错误信息中所提示的,需要在命令行中显式地设置。下载单个文件到指定本地文件夹(以下载README.md到当前路径下“dir”目录为例)解决:这表明你正在使用的 Tesla T4 GPU 的计算能力为 7.5,而。,用于获取更详细的 NCCL 调试信息,当所有其他问题排除,可尝试增加。1、下载vllm v0.8.5(此处已经下好了,去仓库拉资源)在下载前,请先通过如下命令安装ModelScope。,这一错误最终致使引擎进程启动失败。更多更丰富的命令行下载选项,可参见。

汪依帆的博客 5044

最全面Android屏幕适配解决方案

https://blog.youkuaiyun.com/wangwangli6/article/details/63258270 前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文档 郭霖: Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 鸿洋:Android 屏幕适配方案 凯子: ...

快乐李同学的博客 1502

干货满满!AI应用架构师分享AI驱动虚拟展示干货

虚拟展示(Virtual Presentation):用数字技术将物理对象/场景转化为可交互的虚拟内容(比如3D文物、虚拟试衣间);AI驱动(AI-Powered):通过AI技术实现实时交互、智能决策、个性化生成,让虚拟内容“活”起来;AI驱动虚拟展示:以用户体验为核心,将“3D渲染+AI理解+实时数据”融合,形成“感知-决策-反馈”的闭环系统。前端交互层是用户直接体验到的部分,再厉害的AI和渲染,只要前端交互烂,用户都会跑。我见过很多团队为了“炫技”做了复杂的AI功能,结果用户不会用。

AI大模型应用之禅 535

蓝牙学习笔记之HCI协议(一)

目录 协议浅述 HCI简介 HCI协议数据格式 HCI Command Packet HCI ACL Data Packet HCI Synchronous(SCO) Data Packet HCI Event Packet HCI命令和事件介绍 Inquiry command Write Local Name Command Read BD_ADDR Command H...

在云巅的博客 2万+

Android屏幕适配解决方案

本文参考自: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 鸿洋:Android 屏幕适配方案 凯子:Android屏幕适配全攻略(最权威的官方适配指导);简书作者:Carson_Ho Android的屏幕适配一直以来都在折磨着我们Android开发者,本文结合以上参考 给你带来一种全新、全面...

hasayaqimomo的专栏 278

安卓逆向 | 某社交类APP gsid

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

爬虫进击之路 3080

安卓开发中适配不同屏幕尺寸分辨率的解决方案有哪些?

综上所述,安卓开发中适配不同屏幕尺寸和分辨率的解决方案涵盖了多个方面,包括使用资源限定符、dp和sp单位、百分比布局、屏幕适配框架、响应式布局设计、动态加载资源、使用自适应单位以及考虑屏幕方向变化等。开发者可以根据具体需求和项目情况选择适合的适配方案。

qq_43664361的博客 1284

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 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应用开发中,屏幕适配是核心挑战之一。由于设备屏幕尺寸、分辨率和像素密度差异巨大,不当适配会导致布局错乱、控件重叠、字体显示异常等问题。本文分析了典型适配问题现象,并深入解析了像素(px)与密度无关像素(dp)的区别、屏幕密度分类(dpi)及资源选择机制。解决方案包括:1) 使用dp/sp作为尺寸单位;2) 提供多套图片资源并优先使用矢量图(Vector Drawable);3) 采用自适应布局策略。通过系统性的适配方法,开发者可确保应用在不同设备上呈现一致的用户体验。

深山技术宅的博客 827

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android屏幕适配方案,水得我都震惊了

文章目录前言 前言 没有大佬们的辛勤创作,就没有我们搬运工啥事,感动~。总的来说屏幕适配系列的课程讲得一般,刘海屏适配中列出来的各大厂商的参考文档已经算这里面比较有参考价值的资源了。 提示:以下是本篇文章正文内容 一、自定义像素适配 二、手写百分比布局适配 三、修改系统density, densityDpi适配 四、刘海屏适配 五、详解网易云音乐屏幕适配 UI系列文章 ...

让技术为我所用 416

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android 屏幕适配:各种解决方案

Android屏幕适配个种解决方案

lhzjllh的博客 1万+

安卓类似华为手机适配底部虚拟按键的解决方案

场景1:华为手机遮挡了屏幕底部。 场景2:进入应用时,虚拟键自动缩回,留下空白区域。 需求: 需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占满整个屏幕,当用户启用虚拟键时,应用能往上收缩,等于是被底部虚拟按键顶上来。 需求很简单,实现起来却困难重重,公司抠门,连个带虚拟键的手机也不配一部~~。 完美解决方案: 解释一下下面的代码,就是监听某个视

Me_Dong的博客 1万+

安卓进阶(11)之UI适配解决方案

博客内容 有些UI设计师给到我们的设计图的宽的单位是px(比如1080*1920),有的给到我们的的单位是dp(比如360dp),我们没法保证设计师到底给出哪一种,而且,给到我们的设计图的尺寸,我们除了适配常规的尺寸,还得适配非常规的手机分辨率。那具体我们应该怎么去做适配呢? 看了几篇帖子,都是人家用过非常成熟的,适用场景比较多的方案了。我自己总结了下,分为两种解决方案,一种是单位以px为参照物,...

罗小辉的专栏 1150

Android11适配拍照问题解决方案:让应用程序摄影功能无忧

Android11适配拍照问题解决方案:让应用程序摄影功能无忧 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在Android 11发布后,不少开发者遇到了适配问题,特别是在应用程序中集成拍照功能时。针对这一问题,本仓库提供了一套全面的Android11适配拍照问题解决方案,适用于targetSDK版本为31的应用程序。该方案涵盖了拍照、从相册选择图片,以及获取图片路...

gitblog_06754的博客 299
上一篇: 一分钟学会Android--ContentProvider
下一篇: 那些年学习注解所踩过的坑
HHcoco
博客等级 码龄13年 46粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值