日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!...

發(fā)布時(shí)間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

android studio用了很久了,也不知道各位小伙伴有沒(méi)有還在用eclipse的,如果還有,樓主真心推薦轉(zhuǎn)到android studio來(lái)吧,畢竟親兒子,你會(huì)知道除了啟動(dòng)速度稍微慢些,你找不到一個(gè)亞于eclipse的地方,哦,你電腦還不能太爛~

?

1)先來(lái)說(shuō)說(shuō)android studio 啟動(dòng)應(yīng)用黑白屏的問(wèn)題。

前不久升級(jí)了studio,更新到了2.1.1,發(fā)現(xiàn)了一個(gè)問(wèn)題。在啟動(dòng)新項(xiàng)目的時(shí)候,app總會(huì)出現(xiàn)一段長(zhǎng)時(shí)間的白屏或者黑屏,樓主一開(kāi)始一直以為是樓主接的公司項(xiàng)目算法太耗時(shí)的原因,但是樓主在寫(xiě) 小demo的時(shí)候竟然也發(fā)現(xiàn)了這樣的問(wèn)題,而且這樣的情況在網(wǎng)上還相當(dāng)?shù)念l繁,樓主便去網(wǎng)上看了看問(wèn)題所在,請(qǐng)看,圖片來(lái)源于網(wǎng)絡(luò)。

四處查看一番,才知道這是android studio推出的新功能,Instant Run,好吧,對(duì)于這個(gè)東西,樓主不想去做過(guò)多深入的講解,好吧,被你發(fā)現(xiàn)了,是樓主害怕自己講不好這個(gè)東西。

而這個(gè)東西呢一直以來(lái)被廣大朋友詬病,不過(guò)樓主仔細(xì)一看發(fā)現(xiàn)了一點(diǎn)新東西,原來(lái)這個(gè)在重新啟動(dòng)的時(shí)候可以直接重新啟動(dòng)activity,而不是啟動(dòng)整個(gè)app,所以這樣直接加快了我們的開(kāi)發(fā)效率有木有?

大家可以看,這個(gè)運(yùn)行的左邊有一個(gè)閃電的箭頭,這個(gè)就是代表可以使用insant Run啟動(dòng)的。

額,另外對(duì)于大家的擔(dān)心,說(shuō)一下,這個(gè)東西只是google官方在2.0以后為了加快我們的開(kāi)發(fā)效率而做的,實(shí)際上你在真正使用app的時(shí)候并不會(huì)出現(xiàn)這樣可能長(zhǎng)達(dá)7、8秒的黑白屏情況,還望不知道的小伙伴壓壓驚。

?

2)再來(lái)說(shuō)下android studio 的mipmap和drawable的選擇。

大家都知道,android studio相比eclipse,在資源包res下,多了一個(gè)文件夾mipmap,里面的子文件夾竟然和drawable下的一模一樣,那平平多搞一個(gè)出來(lái)做什么呢?

查看官方文檔,下面資料來(lái)自谷歌官方。

額,我相信各位小伙伴的英文水平不會(huì)比樓主還渣吧,樓主簡(jiǎn)單的看了一下,大概意思是:

drawable包下可以存放png,jpeg,gif圖像文件,以及我們開(kāi)發(fā)經(jīng)常用到的.9圖,不過(guò)drawable包主要還是為了存放一些自定義的圖形和按鈕變色等之類(lèi)的xml。

而mipmap是純粹的為存放應(yīng)用icon和一些其他圖片而生,這也是官方強(qiáng)烈推薦我們使用mipmap存放圖片的,官方說(shuō)把圖片放在mipmaps下面可以提高系統(tǒng)渲染圖片的速度,提高圖片質(zhì)量,減少GPU壓力。

?

3)好吧,其實(shí)樓主最想說(shuō)的還是mipmap下幾個(gè)包的作用以及屏幕適配的部分處理。

首先樓主就在樓主的博客園首頁(yè)簡(jiǎn)單截一張圖,放在mipmap下的xhdpi文件夾下。

因?yàn)闃侵鞯氖謾C(jī)就是xhdpi密度的,對(duì)于查看自己的手機(jī)密度,可以通過(guò)兩行代碼處理。

1 public void btnClick(View view) { 2 float xdpi = getResources().getDisplayMetrics().xdpi; 3 float ydpi = getResources().getDisplayMetrics().ydpi; 4 TextView textView = (TextView) findViewById(R.id.text); 5 textView.setText("寬度:"+xdpi+" 高度:"+ydpi); 6 }

樓主的xml文件很簡(jiǎn)單。

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context="com.example.nanchen.drawablemipmapdemo.MainActivity"> 9 10 <Button 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:text="獲取屏幕寬度" 14 android:onClick="btnClick"/> 15 <TextView 16 android:layout_width="match_parent" 17 android:layout_height="wrap_content" 18 android:id="@+id/text" 19 android:text="用于顯示屏幕寬高"/> 20 21 <TextView 22 android:layout_marginTop="10dp" 23 android:layout_marginBottom="10dp" 24 android:layout_width="match_parent" 25 android:layout_height="1dp" 26 android:background="#9c9a9a"/> 27 28 <ImageView 29 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:src="@mipmap/test" 33 android:contentDescription="用于展示圖片"/> 34 </LinearLayout>

運(yùn)行:

點(diǎn)擊按鈕,可以看到樓主的機(jī)型是295*295的,屬于xhdpi密度機(jī)型,對(duì)于比對(duì),大家可以查看下圖。

?

而圖片的顯示樓主是采用的wrap_content包裹內(nèi)容,下面我們把圖片移動(dòng)到xxdpi,注意:不是復(fù)制,是移動(dòng)!!!

再次運(yùn)行:

什么鬼,圖片直接變小了,錯(cuò)覺(jué)?

再次把圖片移動(dòng)到hdpi包下看看。

運(yùn)行:

這次又變大了,看來(lái)這的確不是錯(cuò)覺(jué)呀。

分析一下,我們把一張圖片放在比手機(jī)密度高的包下的時(shí)候,顯示出來(lái)的東西會(huì)變小,而放在密度比手機(jī)更低的包下,圖片會(huì)自動(dòng)放大。

我是這樣理解的,不知道正確與否,手機(jī)的密度大小就像一個(gè)容器,當(dāng)手機(jī)密度大的時(shí)候意味著可以裝的東西更大,而一個(gè)同樣大小的東西看起來(lái)相對(duì)就會(huì)小一些,所以我們看到的顯示的圖片變小了,而放在密度更小的包下的時(shí)候,圖片看起來(lái)相對(duì)會(huì)大些。

嘿嘿,投機(jī)取巧了。

?

4)日常開(kāi)發(fā)應(yīng)該注意的問(wèn)題。

?根據(jù)android的開(kāi)發(fā)建議,我們應(yīng)該在準(zhǔn)備圖片資源的時(shí)候盡量給每種密度都準(zhǔn)備一套,這樣可以使屏幕的適配性達(dá)到最好,這也是因?yàn)槲覀僡ndroid機(jī)型眾多的一個(gè)基本要求。

UI順便再把按照縮放比例來(lái)為我們準(zhǔn)備一套,想想真是美妙極了。

但,實(shí)際情況是!!!!

他們只會(huì)給你一套圖片資源,沒(méi)錯(cuò),理想很豐滿(mǎn),現(xiàn)實(shí)很骨感,的確如此,那我們?cè)僭趺礃右驳弥泵鎽K淡的人生對(duì)吧,怎么做呢?

根據(jù)我們上面的測(cè)試,可以發(fā)現(xiàn)當(dāng)一張圖片放在高密度的包下,圖片會(huì)被縮小,除了看著小點(diǎn)好像還沒(méi)什么,但是當(dāng)在低密度的包下,圖片的放大必然會(huì)引起占用更多的內(nèi)存。因?yàn)閳D片變大了,占用的像素點(diǎn)也就更多了,而這也必然會(huì)導(dǎo)致內(nèi)存的占用增加。

我相信很多在職開(kāi)發(fā)人員都有遇到,就是當(dāng)你的項(xiàng)目慢慢變大后,你引用一張hdpi像素的照片時(shí),都極有可能發(fā)生OOM,但如果放在高密度的xxhdp或者xxxhdpi的時(shí)候,這樣的情況就不會(huì)發(fā)生。

經(jīng)過(guò)上面的分析,也可以得到這樣的結(jié)論,我們最佳的放置應(yīng)該在高密度的文件夾下,而目前市面最合適的是xxhdpi。

?

好了,本節(jié)內(nèi)容先介紹到這里,歡迎指正。

?

——————————————————————————————————————————————————————————————————

?

2016年8月18日15時(shí)57分更正:

首先感謝好心人士?Fndroid在評(píng)論區(qū)的解答,根據(jù)樓主查看官方資料,的確是有說(shuō)明圖片我們應(yīng)該盡量的置于drawable文件夾下,而mipmap用于存放圖標(biāo),android studio之所以會(huì)在drawable的基礎(chǔ)上添加上mipmap,是為了解決由于項(xiàng)目的增大導(dǎo)致開(kāi)發(fā)人員會(huì)把圖片和icon混淆,所以增加了mipmap一類(lèi)專(zhuān)用于存放圖標(biāo)的文件夾。

轉(zhuǎn)載于:https://www.cnblogs.com/liushilin/p/5778544.html

總結(jié)

以上是生活随笔為你收集整理的android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。