Android Studio(3.1.3 win64)中9-patch图片的制作和使用

UE5安卓打包全流程:从环境配置到APK生成与真机调试 在移动应用开发中,将高性能的3D项目部署到安卓平台是一项关键且复杂的技术挑战,其核心在于构建工具链的协同与配置。这一过程涉及Android SDK、NDK、JDK等基础组件的版本对齐与环境变量配置,其原理是通过Gradle构建系统将Unreal Engine项目资源与代码编译、链接并打包为可执行的APK文件。正确的配置不仅能确保打包成功,更能优化应用性能与兼容性。对于使用UE5进行移动开发的团队而言,掌握从环境搭建、项目设置到命令行打包、日志分析的完整流程,是提升开发效率、减少部署障碍的重要工程实践。本文聚 阅读详情

Android app 开发中使用的 9-patch 图片,在作为空间背景时可以按照开发人员的设置做相应的拉伸,从而保证正常的小时效果。

在翻阅郭神的《第一行代码》第二版  chapter3 相应章节时,发现郭神对 9-patch 图片的使用,有个步骤不生效,也可能是我理解有问题,遂花了点时间重新整理了一遍 9-patch 图片的制作过程和使用步骤,亲测可正常使用。

测试时使用的 Android Studio 版本号为 3.1.3(Win64)。

网上的其他博客在介绍 9-patch 时会带上以前eclipse和低版本的 Android Studio 的制作方法。本文就不在重复已有的内容,直接上最新版本的 Android Studio 上的用法。

1. 制作

步骤一:将待制作的原始图片 xxx.png 放至 res/drawable 目录下。注意不能放在其他目录,我尝试在 mipmap 目录下操作,结果失败了。

步骤二:选中原始图片 xxx.png,右击,在弹出的菜单中选择“Create 9-Patch file...”选项,如下图所示


步骤三:在弹出的窗口中(如下图)选择保存的路径,设置新生成的 9-patch 图片的名字,直接使用默认的路径和名字即可,点击 OK 按钮完成本步操作


步骤四:在 Android Studio 中直接到 res/drawable 目录下双击步骤三中生成的

VersaLogic Android评估套件解析:从AOSP到工业嵌入式实战 在工业嵌入式领域,Android正从消费端走向工控端,其底层Linux内核与成熟应用框架的结合,让设备交互、生态复用和开发效率获得质的提升。AOSP作为开源底座,配合BSP定制、驱动适配和系统裁剪,构成了一套完整的技术链路。x86平台跑Android在性能与外设兼容性上具备独特优势,尤其适合工业HMI、医疗终端、边缘计算网关等场景。面对具体项目,开发人员还需掌握fastboot烧录、ADB调试、SELinux策略配置、OTA升级等实操要点。VersaLogic推出的Android Demo/Eval Kit 阅读详情

相关推荐

Android逆向环境搭建全攻略:从JDK到Jadx,新手避坑指南

在移动安全与软件分析领域,环境搭建是开展技术实践的首要基础。其核心原理在于配置一套能够解析、调试和修改应用程序的软件工具链,这直接决定了后续逆向工程与分析工作的效率与可行性。对于Android平台而言,一套标准化的环境具有极高的技术价值,它不仅是学习应用安全、漏洞挖掘的起点,也是进行合规性测试、安全评估的工程基础。其典型应用场景包括移动应用安全审计、恶意软件分析、第三方SDK行为研究以及学习Android系统底层机制。本文将聚焦于Android App逆向这一具体领域,针对初学者在环境配置中普遍遇到的兼容性

dbp5156的博客 407

2026安卓抓包新范式:免证书、应用层Hook与代理协同

安卓抓包本质是突破TLS加密与证书校验的技术实践,其核心原理在于分层拦截——从网络层代理解密,到应用层内存Hook绕过证书验证。随着Android 12+强制Network Security Config、OkHttp CertificatePinner普及及Android 14 SELinux收紧,传统‘安装根证书’方式已失效,‘免证书抓包’成为工程刚需,它并非放弃解密,而是将解密点前移至应用进程内存(如Hook okhttp3.Request.Builder.build)。该技术显著提升对微信、支付宝等

weixin_33797791的博客 691

Codex CLI与App本质区别:可编程协作者vs受控沙盒环境

Codex CLI和Codex App并非同类工具的简单对比,而是面向不同工程范式的底层设计产物。CLI遵循Unix哲学,作为无状态、可组合的终端协作者,天然适配自动化流水线与脚本集成;App则构建于安全沙盒之上,以图形界面和策略管控降低使用门槛,强调可控性与团队协作。其技术价值体现在对CI/CD、IDE嵌入、私有模型(如DeepSeek)及企业网关兼容等场景的差异化支撑。当开发者搜索‘codex cli安装’或‘codex app windows配置’时,真正需要判断的是工作流中哪一环需被接管——是无人值

circularr9834的博客 460

Android Studio 制作 9-Patch 图片

可以用Photoshop将一个已有的.png编辑成.9.png。其实,Android本身也提供了编辑.9.png的工具,Android/sdk/tools目录下有很多实用的工具,我们可以使用该目录下的draw9patch工具对.png图片进行编辑。

彬sir哥的博客 1646

Android studio1.3.1从菜鸟到高手--第一季-视频-百度盘

百度盘下载地址

message_left.png

3.7章中的聊天框图片 处理前,后两张message_left.png message.9.png

Android Studio 3.1.3 汉化包

下载后直接放到安装目录下的 /lib/ 中,重启软件即可。 原创地址、更多汉化包、问题反馈、免积分下载:http://www.pingfangx.com/xx/translation

message_left图片

《第一行代码的》message_left图片,可用于学习开发。

android studio 3.1.3相关下载

java 1.8:jdk-8u171-windows-x64 Android studio 3.1.3:android-studio-ide-173.4819257-windows SDK:installer_r24.4.1-windows

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

从零开始:EAS2+Elmo+Maxon电机调试全流程(含电流环优化技巧)

本文详细解析了从零开始搭建基于EAS2软件、Elmo驱动器和Maxon电机的运动控制系统的全流程。内容涵盖硬件连接规范、EAS2基础配置、核心的电流环模型辨识与手动优化技巧,以及速度环、位置环的搭建与调试策略,旨在帮助工程师构建稳定、高性能的伺服控制核心。

i0j1k2l3m的博客 502

【零基础教程】HEC-RAS 1D/2D全流程模拟指南|从水动力到水质建模一次搞定!

HEC-RAS由美国陆军工程兵团水文研究中心研制,具有完整的一二维耦合的水动力及水环境模拟功能,也具有闸、涵洞、桥梁以及泵站等水利构筑物的模拟能力;同时也可以与HEC研制的水文模型(HMS)、洪水淹没风险和损失分析软件(FDA)等耦合,是免费软件中使用最方便、应用最广泛的软件之一。2.HEC-RAS与HEC-HMS的耦合(不详细讲HEC-HMS)3.淹没风险分析软件HEC-FDA与HEC-RAS耦合。案例十八:HEC-RAS与HEC-HMS的耦合。案例十九:HEC-RAS与HEC-FDA的耦合。

weixin_48230888的博客 872

磁盘I/O %util特别高

磁盘I/O %util特别高

eagle89的专栏 3090

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 690

C# + YOLO 实时摄像头检测:Emgu CV + ONNX Runtime,30FPS+ 流畅运行

很多教程只给“单张图片推理”代码,一上摄像头就卡成 PPT(<5 FPS)。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 215

【2025软考高级架构师】论文篇——4、论可靠性系统中软件容错技术的应用

软件容错技术对软件的稳定性起着至关重要的作用,尤其是针对互联网性质的软件并发高存在流量峰值等问题,软件容错技术的应用的重要性就不言而喻了。经过这次我所采用的软件容错技术的方法和措施的实施效果后,使我也看到了自己身上的不足之处,我会在今后的架构设计过程中,不断更新自己的知识,不断完善自己的架构设计领域,设计出更好的软件架构,更好的支撑业务平台的运行,提高公司的竞争力,为公司为社会尽一份绵薄之力。

qq837993702的博客 618

论文分栏前后内容不连续?教你word如何删除分节符

问题 当我们在写论文的时候,很多期刊的模板都是两栏的格式,但有的时候我们插入的图像尺寸可能太大,两栏格式放不下,因此需要将其以一栏的格式出入,如下: 但当我们把图片删除后,再将其转换成两栏格式,前后内容就出现不连续的情况: 正常情况下应该是如下: 正确处理方式 里面有个分页符,把分页符去掉,或者把你的文字全部复制到记事本里,然后重新复制回word就可以取消原有的格式了。 删除分节符的方法(以word 2019为例) -点击菜单栏上的“视图”,点击“大纲视图”。 可以看到word文档以整列的形式展开:

左手の明天的博客 1万+

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 我的第一篇技术博客------Java中的多线程机制学习
下一篇: 途径:Android手机通过WiFi连接PC | 目的:使用adb指令
玩火轩辕
博客等级 码龄15年 6粉丝 22原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值