您现在的位置是:首页 > 文章详情

Android--屏幕适配通用

日期:2018-05-11点击:299
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/80292218

使用步骤:

1、以某一widthDP为基准,生成所有设备对应的dimens.xml文件

<?xml version="1.0" encoding="UTF-8"?> <resources> <!-- Your custom size defind by references, can be writted in anywhere, any module, any values/*.xml, for example: --> <dimen name="common_margin">@dimen/dp_15</dimen> <!-- dp and sp values, must be defind in this file! --> <!-- view size,you can add if there is no one --> <dimen name="dp_m_60">-60dp</dimen> <dimen name="dp_m_30">-30dp</dimen> <dimen name="dp_m_20">-20dp</dimen> <dimen name="dp_m_12">-12dp</dimen> <dimen name="dp_m_10">-10dp</dimen> <dimen name="dp_m_8">-8dp</dimen> <dimen name="dp_m_5">-5dp</dimen> <dimen name="dp_m_2">-2dp</dimen> <dimen name="dp_m_1">-1dp</dimen> <dimen name="dp_0">0dp</dimen> <dimen name="dp_0_1">0.1dp</dimen> <dimen name="dp_0_5">0.5dp</dimen> <dimen name="dp_1">1dp</dimen> <dimen name="dp_1_5">1.5dp</dimen> <dimen name="dp_2">2dp</dimen> <dimen name="dp_2_5">2.5dp</dimen> <dimen name="dp_3">3dp</dimen> <dimen name="dp_3_5">3.5dp</dimen> <dimen name="dp_4">4dp</dimen> <dimen name="dp_4_5">4.5dp</dimen> <dimen name="dp_5">5dp</dimen> <dimen name="dp_6">6dp</dimen> <dimen name="dp_7">7dp</dimen> <dimen name="dp_8">8dp</dimen> <dimen name="dp_9">9dp</dimen> <dimen name="dp_10">10dp</dimen> <dimen name="dp_11">11dp</dimen> <dimen name="dp_12">12dp</dimen> <dimen name="dp_13">13dp</dimen> <dimen name="dp_14">14dp</dimen> <dimen name="dp_15">15dp</dimen> <dimen name="dp_16">16dp</dimen> <dimen name="dp_17">17dp</dimen> <dimen name="dp_18">18dp</dimen> <dimen name="dp_19">19dp</dimen> <dimen name="dp_20">20dp</dimen> <dimen name="dp_21">21dp</dimen> <dimen name="dp_22">22dp</dimen> <dimen name="dp_23">23dp</dimen> <dimen name="dp_24">24dp</dimen> <dimen name="dp_25">25dp</dimen> <dimen name="dp_26">26dp</dimen> <dimen name="dp_27">27dp</dimen> <dimen name="dp_28">28dp</dimen> <dimen name="dp_29">29dp</dimen> <dimen name="dp_30">30dp</dimen> <dimen name="dp_31">31dp</dimen> <dimen name="dp_32">32dp</dimen> <dimen name="dp_33">33dp</dimen> <dimen name="dp_34">34dp</dimen> <dimen name="dp_35">35dp</dimen> <dimen name="dp_36">36dp</dimen> <dimen name="dp_37">37dp</dimen> <dimen name="dp_38">38dp</dimen> <dimen name="dp_39">39dp</dimen> <dimen name="dp_40">40dp</dimen> <dimen name="dp_41">41dp</dimen> <dimen name="dp_42">42dp</dimen> <dimen name="dp_43">43dp</dimen> <dimen name="dp_44">44dp</dimen> <dimen name="dp_45">45dp</dimen> <dimen name="dp_46">46dp</dimen> <dimen name="dp_47">47dp</dimen> <dimen name="dp_48">48dp</dimen> <dimen name="dp_49">49dp</dimen> <dimen name="dp_50">50dp</dimen> <dimen name="dp_51">51dp</dimen> <dimen name="dp_52">52dp</dimen> <dimen name="dp_53">53dp</dimen> <dimen name="dp_54">54dp</dimen> <dimen name="dp_55">55dp</dimen> <dimen name="dp_56">56dp</dimen> <dimen name="dp_57">57dp</dimen> <dimen name="dp_58">58dp</dimen> <dimen name="dp_59">59dp</dimen> <dimen name="dp_60">60dp</dimen> <dimen name="dp_61">61dp</dimen> <dimen name="dp_62">62dp</dimen> <dimen name="dp_63">63dp</dimen> <dimen name="dp_64">64dp</dimen> <dimen name="dp_65">65dp</dimen> <dimen name="dp_66">66dp</dimen> <dimen name="dp_67">67dp</dimen> <dimen name="dp_68">68dp</dimen> <dimen name="dp_69">69dp</dimen> <dimen name="dp_70">70dp</dimen> <dimen name="dp_71">71dp</dimen> <dimen name="dp_72">72dp</dimen> <dimen name="dp_73">73dp</dimen> <dimen name="dp_74">74dp</dimen> <dimen name="dp_75">75dp</dimen> <dimen name="dp_76">76dp</dimen> <dimen name="dp_77">77dp</dimen> <dimen name="dp_78">78dp</dimen> <dimen name="dp_79">79dp</dimen> <dimen name="dp_80">80dp</dimen> <dimen name="dp_81">81dp</dimen> <dimen name="dp_82">82dp</dimen> <dimen name="dp_83">83dp</dimen> <dimen name="dp_84">84dp</dimen> <dimen name="dp_85">85dp</dimen> <dimen name="dp_86">86dp</dimen> <dimen name="dp_87">87dp</dimen> <dimen name="dp_88">88dp</dimen> <dimen name="dp_89">89dp</dimen> <dimen name="dp_90">90dp</dimen> <dimen name="dp_91">91dp</dimen> <dimen name="dp_92">92dp</dimen> <dimen name="dp_93">93dp</dimen> <dimen name="dp_94">94dp</dimen> <dimen name="dp_95">95dp</dimen> <dimen name="dp_96">96dp</dimen> <dimen name="dp_97">97dp</dimen> <dimen name="dp_98">98dp</dimen> <dimen name="dp_99">99dp</dimen> <dimen name="dp_100">100dp</dimen> <dimen name="dp_101">101dp</dimen> <dimen name="dp_102">102dp</dimen> <dimen name="dp_103">103dp</dimen> <dimen name="dp_104">104dp</dimen> <dimen name="dp_105">105dp</dimen> <dimen name="dp_106">106dp</dimen> <dimen name="dp_107">107dp</dimen> <dimen name="dp_108">108dp</dimen> <dimen name="dp_109">109dp</dimen> <dimen name="dp_110">110dp</dimen> <dimen name="dp_111">111dp</dimen> <dimen name="dp_112">112dp</dimen> <dimen name="dp_113">113dp</dimen> <dimen name="dp_114">114dp</dimen> <dimen name="dp_115">115dp</dimen> <dimen name="dp_116">116dp</dimen> <dimen name="dp_117">117dp</dimen> <dimen name="dp_118">118dp</dimen> <dimen name="dp_119">119dp</dimen> <dimen name="dp_120">120dp</dimen> <dimen name="dp_121">121dp</dimen> <dimen name="dp_122">122dp</dimen> <dimen name="dp_123">123dp</dimen> <dimen name="dp_124">124dp</dimen> <dimen name="dp_125">125dp</dimen> <dimen name="dp_126">126dp</dimen> <dimen name="dp_127">127dp</dimen> <dimen name="dp_128">128dp</dimen> <dimen name="dp_129">129dp</dimen> <dimen name="dp_130">130dp</dimen> <dimen name="dp_131">131dp</dimen> <dimen name="dp_132">132dp</dimen> <dimen name="dp_133">133dp</dimen> <dimen name="dp_134">134dp</dimen> <dimen name="dp_135">135dp</dimen> <dimen name="dp_136">136dp</dimen> <dimen name="dp_137">137dp</dimen> <dimen name="dp_138">138dp</dimen> <dimen name="dp_139">139dp</dimen> <dimen name="dp_140">140dp</dimen> <dimen name="dp_141">141dp</dimen> <dimen name="dp_142">142dp</dimen> <dimen name="dp_143">143dp</dimen> <dimen name="dp_144">144dp</dimen> <dimen name="dp_145">145dp</dimen> <dimen name="dp_146">146dp</dimen> <dimen name="dp_147">147dp</dimen> <dimen name="dp_148">148dp</dimen> <dimen name="dp_149">149dp</dimen> <dimen name="dp_150">150dp</dimen> <dimen name="dp_151">151dp</dimen> <dimen name="dp_152">152dp</dimen> <dimen name="dp_153">153dp</dimen> <dimen name="dp_154">154dp</dimen> <dimen name="dp_155">155dp</dimen> <dimen name="dp_156">156dp</dimen> <dimen name="dp_157">157dp</dimen> <dimen name="dp_158">158dp</dimen> <dimen name="dp_159">159dp</dimen> <dimen name="dp_160">160dp</dimen> <dimen name="dp_161">161dp</dimen> <dimen name="dp_162">162dp</dimen> <dimen name="dp_163">163dp</dimen> <dimen name="dp_164">164dp</dimen> <dimen name="dp_165">165dp</dimen> <dimen name="dp_166">166dp</dimen> <dimen name="dp_167">167dp</dimen> <dimen name="dp_168">168dp</dimen> <dimen name="dp_169">169dp</dimen> <dimen name="dp_170">170dp</dimen> <dimen name="dp_171">171dp</dimen> <dimen name="dp_172">172dp</dimen> <dimen name="dp_173">173dp</dimen> <dimen name="dp_174">174dp</dimen> <dimen name="dp_175">175dp</dimen> <dimen name="dp_176">176dp</dimen> <dimen name="dp_177">177dp</dimen> <dimen name="dp_178">178dp</dimen> <dimen name="dp_179">179dp</dimen> <dimen name="dp_180">180dp</dimen> <dimen name="dp_181">181dp</dimen> <dimen name="dp_182">182dp</dimen> <dimen name="dp_183">183dp</dimen> <dimen name="dp_184">184dp</dimen> <dimen name="dp_185">185dp</dimen> <dimen name="dp_186">186dp</dimen> <dimen name="dp_187">187dp</dimen> <dimen name="dp_188">188dp</dimen> <dimen name="dp_189">189dp</dimen> <dimen name="dp_190">190dp</dimen> <dimen name="dp_191">191dp</dimen> <dimen name="dp_192">192dp</dimen> <dimen name="dp_193">193dp</dimen> <dimen name="dp_194">194dp</dimen> <dimen name="dp_195">195dp</dimen> <dimen name="dp_196">196dp</dimen> <dimen name="dp_197">197dp</dimen> <dimen name="dp_198">198dp</dimen> <dimen name="dp_199">199dp</dimen> <dimen name="dp_200">200dp</dimen> <dimen name="dp_201">201dp</dimen> <dimen name="dp_202">202dp</dimen> <dimen name="dp_203">203dp</dimen> <dimen name="dp_204">204dp</dimen> <dimen name="dp_205">205dp</dimen> <dimen name="dp_206">206dp</dimen> <dimen name="dp_207">207dp</dimen> <dimen name="dp_208">208dp</dimen> <dimen name="dp_209">209dp</dimen> <dimen name="dp_210">210dp</dimen> <dimen name="dp_211">211dp</dimen> <dimen name="dp_212">212dp</dimen> <dimen name="dp_213">213dp</dimen> <dimen name="dp_214">214dp</dimen> <dimen name="dp_215">215dp</dimen> <dimen name="dp_216">216dp</dimen> <dimen name="dp_217">217dp</dimen> <dimen name="dp_218">218dp</dimen> <dimen name="dp_219">219dp</dimen> <dimen name="dp_220">220dp</dimen> <dimen name="dp_221">221dp</dimen> <dimen name="dp_222">222dp</dimen> <dimen name="dp_223">223dp</dimen> <dimen name="dp_224">224dp</dimen> <dimen name="dp_225">225dp</dimen> <dimen name="dp_226">226dp</dimen> <dimen name="dp_227">227dp</dimen> <dimen name="dp_228">228dp</dimen> <dimen name="dp_229">229dp</dimen> <dimen name="dp_230">230dp</dimen> <dimen name="dp_231">231dp</dimen> <dimen name="dp_232">232dp</dimen> <dimen name="dp_233">233dp</dimen> <dimen name="dp_234">234dp</dimen> <dimen name="dp_235">235dp</dimen> <dimen name="dp_236">236dp</dimen> <dimen name="dp_237">237dp</dimen> <dimen name="dp_238">238dp</dimen> <dimen name="dp_239">239dp</dimen> <dimen name="dp_240">240dp</dimen> <dimen name="dp_241">241dp</dimen> <dimen name="dp_242">242dp</dimen> <dimen name="dp_243">243dp</dimen> <dimen name="dp_244">244dp</dimen> <dimen name="dp_245">245dp</dimen> <dimen name="dp_246">246dp</dimen> <dimen name="dp_247">247dp</dimen> <dimen name="dp_248">248dp</dimen> <dimen name="dp_249">249dp</dimen> <dimen name="dp_250">250dp</dimen> <dimen name="dp_251">251dp</dimen> <dimen name="dp_252">252dp</dimen> <dimen name="dp_253">253dp</dimen> <dimen name="dp_254">254dp</dimen> <dimen name="dp_255">255dp</dimen> <dimen name="dp_256">256dp</dimen> <dimen name="dp_257">257dp</dimen> <dimen name="dp_258">258dp</dimen> <dimen name="dp_259">259dp</dimen> <dimen name="dp_260">260dp</dimen> <dimen name="dp_261">261dp</dimen> <dimen name="dp_262">262dp</dimen> <dimen name="dp_263">263dp</dimen> <dimen name="dp_264">264dp</dimen> <dimen name="dp_265">265dp</dimen> <dimen name="dp_266">266dp</dimen> <dimen name="dp_267">267dp</dimen> <dimen name="dp_268">268dp</dimen> <dimen name="dp_269">269dp</dimen> <dimen name="dp_270">270dp</dimen> <dimen name="dp_271">271dp</dimen> <dimen name="dp_272">272dp</dimen> <dimen name="dp_273">273dp</dimen> <dimen name="dp_274">274dp</dimen> <dimen name="dp_275">275dp</dimen> <dimen name="dp_276">276dp</dimen> <dimen name="dp_277">277dp</dimen> <dimen name="dp_278">278dp</dimen> <dimen name="dp_279">279dp</dimen> <dimen name="dp_280">280dp</dimen> <dimen name="dp_281">281dp</dimen> <dimen name="dp_282">282dp</dimen> <dimen name="dp_283">283dp</dimen> <dimen name="dp_284">284dp</dimen> <dimen name="dp_285">285dp</dimen> <dimen name="dp_286">286dp</dimen> <dimen name="dp_287">287dp</dimen> <dimen name="dp_288">288dp</dimen> <dimen name="dp_289">289dp</dimen> <dimen name="dp_290">290dp</dimen> <dimen name="dp_291">291dp</dimen> <dimen name="dp_292">292dp</dimen> <dimen name="dp_293">293dp</dimen> <dimen name="dp_294">294dp</dimen> <dimen name="dp_295">295dp</dimen> <dimen name="dp_296">296dp</dimen> <dimen name="dp_297">297dp</dimen> <dimen name="dp_298">298dp</dimen> <dimen name="dp_299">299dp</dimen> <dimen name="dp_300">300dp</dimen> <dimen name="dp_301">301dp</dimen> <dimen name="dp_302">302dp</dimen> <dimen name="dp_303">303dp</dimen> <dimen name="dp_304">304dp</dimen> <dimen name="dp_305">305dp</dimen> <dimen name="dp_306">306dp</dimen> <dimen name="dp_307">307dp</dimen> <dimen name="dp_308">308dp</dimen> <dimen name="dp_309">309dp</dimen> <dimen name="dp_310">310dp</dimen> <dimen name="dp_311">311dp</dimen> <dimen name="dp_312">312dp</dimen> <dimen name="dp_313">313dp</dimen> <dimen name="dp_314">314dp</dimen> <dimen name="dp_315">315dp</dimen> <dimen name="dp_316">316dp</dimen> <dimen name="dp_317">317dp</dimen> <dimen name="dp_318">318dp</dimen> <dimen name="dp_319">319dp</dimen> <dimen name="dp_320">320dp</dimen> <dimen name="dp_321">321dp</dimen> <dimen name="dp_322">322dp</dimen> <dimen name="dp_323">323dp</dimen> <dimen name="dp_324">324dp</dimen> <dimen name="dp_325">325dp</dimen> <dimen name="dp_326">326dp</dimen> <dimen name="dp_327">327dp</dimen> <dimen name="dp_328">328dp</dimen> <dimen name="dp_329">329dp</dimen> <dimen name="dp_330">330dp</dimen> <dimen name="dp_331">331dp</dimen> <dimen name="dp_332">332dp</dimen> <dimen name="dp_333">333dp</dimen> <dimen name="dp_334">334dp</dimen> <dimen name="dp_335">335dp</dimen> <dimen name="dp_336">336dp</dimen> <dimen name="dp_337">337dp</dimen> <dimen name="dp_338">338dp</dimen> <dimen name="dp_339">339dp</dimen> <dimen name="dp_340">340dp</dimen> <dimen name="dp_341">341dp</dimen> <dimen name="dp_342">342dp</dimen> <dimen name="dp_343">343dp</dimen> <dimen name="dp_344">344dp</dimen> <dimen name="dp_345">345dp</dimen> <dimen name="dp_346">346dp</dimen> <dimen name="dp_347">347dp</dimen> <dimen name="dp_348">348dp</dimen> <dimen name="dp_349">349dp</dimen> <dimen name="dp_350">350dp</dimen> <dimen name="dp_351">351dp</dimen> <dimen name="dp_352">352dp</dimen> <dimen name="dp_353">353dp</dimen> <dimen name="dp_354">354dp</dimen> <dimen name="dp_355">355dp</dimen> <dimen name="dp_356">356dp</dimen> <dimen name="dp_357">357dp</dimen> <dimen name="dp_358">358dp</dimen> <dimen name="dp_359">359dp</dimen> <dimen name="dp_360">360dp</dimen> <dimen name="dp_365">365dp</dimen> <dimen name="dp_370">370dp</dimen> <dimen name="dp_400">400dp</dimen> <dimen name="dp_410">410dp</dimen> <dimen name="dp_422">422dp</dimen> <dimen name="dp_472">472dp</dimen> <dimen name="dp_500">500dp</dimen> <dimen name="dp_600">600dp</dimen> <dimen name="dp_640">640dp</dimen> <dimen name="dp_720">720dp</dimen> <!-- font size,you can add if there is no one --> <dimen name="sp_6">6sp</dimen> <dimen name="sp_7">7sp</dimen> <dimen name="sp_8">8sp</dimen> <dimen name="sp_9">9sp</dimen> <dimen name="sp_10">10sp</dimen> <dimen name="sp_11">11sp</dimen> <dimen name="sp_12">12sp</dimen> <dimen name="sp_13">13sp</dimen> <dimen name="sp_14">14sp</dimen> <dimen name="sp_15">15sp</dimen> <dimen name="sp_16">16sp</dimen> <dimen name="sp_17">17sp</dimen> <dimen name="sp_18">18sp</dimen> <dimen name="sp_19">19sp</dimen> <dimen name="sp_20">20sp</dimen> <dimen name="sp_21">21sp</dimen> <dimen name="sp_22">22sp</dimen> <dimen name="sp_23">23sp</dimen> <dimen name="sp_24">24sp</dimen> <dimen name="sp_25">25sp</dimen> <dimen name="sp_28">28sp</dimen> <dimen name="sp_30">30sp</dimen> <dimen name="sp_32">32sp</dimen> <dimen name="sp_34">34sp</dimen> <dimen name="sp_36">36sp</dimen> <dimen name="sp_38">38sp</dimen> <dimen name="sp_40">40sp</dimen> <dimen name="sp_42">42sp</dimen> <dimen name="sp_48">48sp</dimen> </resources> 

2、在Android Studio中安装ScreenMatch插件,如图:


3、插件安装好后,在项目的任意目录或文件上右键,选择ScreenMatch选项。如图:


然后选择在哪个module下执行适配。即基于哪个module下的res/values/dimens.xml文件作为基准dimens.xml文件,生成的其他尺寸dimens.xml文件放在哪个module下。


点击确认然后再看看res目录下会自动生成一堆dimens.xml文件,如下:


通过上面的步骤就已经生成了所有设备对应的dimens.xml文件。

因为默认生成的是下列最小宽度dp的dimens.xml文件
384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365,如果不需要或者需要增加某些dp值的dimens.xml文件,则需要修改配置文件,即screenMatch.properties文件(修改前先删除之前生成的全部dimens.xml文件)。配置文件在我们执行完成上面的命令后,会在项目的目录下自动生成,如下:


打开文件,修改下面的值即可。如下只需要适配384,392,400,410,411的值,不需要适配480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365的值

其中base_dp=360代表widthDP基准值,一般都是360dp,不建议更改,除非你对屏幕适配原理有深刻的见解。
2、根据设计图标注,在布局写上对应的值。

在安卓中,系统密度为160dpi的中密度手机屏幕为基准屏幕,即320×480的手机屏幕。在这个屏幕中,1dp=1px。320x480分辨率对应的其他分辨率的比例如下:

所以,如果UI给的是720x1280分辨率的图, 那么dp = px / 2, 给的是1080x1920分辨率的图,那么 dp = px / 3,即根据比例即可。

举例:UI在720x1280上做的图,其中一个按钮的宽高分辨为:宽720px,高为100px,字体大小为30px,在布局中则这样使用:

 <Button android:layout_width="@dimen/dp_360" android:layout_height="@dimen/dp_50" android:textSize="@dimen/sp_15"/> 

代码中动态设置dp或sp:
如果需要在代码中动态设置dp或sp,则需要通过getDimension()方法获取对应资源文件下的dp或sp值再设置(具体参考github上的demo)。如下:

 /*获取sp值*/ float pxValue = getResources().getDimension(R.dimen.sp_15);//获取对应资源文件下的sp值 int spValue = ConvertUtils.px2sp(this, pxValue);//将px值转换成sp值 mTvShowParams.setTextSize(spValue);//设置文字大小 /*获取dp值*/ float pxValue2 = getResources().getDimension(R.dimen.dp_360);//获取对应资源文件下的dp值 int dpValue = ConvertUtils.px2dp(this, pxValue2);//将px值转换成dp值 

怎么适配其他module?

  • 问题:在项目的其他module中怎么实现适配?难道也要多套dimens?
  • 解决:并不需要多套dimens,只需要在values文件夹下有一套与app module一样的dimens文件即可达到适配。因为经过编译,所有module中的dimen数据都会统一归类到主module(即app module)中的values/dimens.xml文件中了,然后系统又会根据你设置的值去找对应values-swxxxdp文件夹下的dimens.xml文件中的值。
  • 验证:在项目中建一个module,然后随便取一个dimens.xml文件中的值进行打印,分别运行在不同widthDP的设备上(用模拟器即可)观察打印的结果发现确实是这样的。

原文链接:https://yq.aliyun.com/articles/631442
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章