真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android布局面試題有哪些

本篇內(nèi)容介紹了“Android布局面試題有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)為客戶提供專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、移動(dòng)網(wǎng)站建設(shè)等網(wǎng)站方面業(yè)務(wù)。

  1. Android 中常用的布局都有哪些?

    • FrameLayout

    • RelativeLayout

    • LinearLayout

    • AbsoluteLayout

    • TableLayout

    • GrideLayout(Android 4.0 推出)

  2. 談?wù)?UI 中, Padding 和 Margin 有什么區(qū)別?

    android:paddingandroid:layout_margin 的區(qū)別,其實(shí)概念很簡(jiǎn)單,padding 是站在父 view 的角度描述問(wèn) 題,它規(guī)定它里面的內(nèi)容必須與這個(gè)父 view 邊界的距離。margin 則是站在自己的角度描述問(wèn)題,規(guī)定自己和其他(上下左右)的 view 之間的距離,如果同一級(jí)只有一個(gè) view,那么它的效果基本上就和 padding 一樣了。

  3. 使用權(quán)重如何讓一個(gè)控件的寬度為父控件的 1/3?
    可以在水平方向的 LinearLayout 中設(shè)置 weightSum 為 3,然后讓其子控件的 weight 為 1,那么該子控件就是 父控件的 1/3。

  4. Android 中布局的優(yōu)化措施都有哪些?
    這個(gè)問(wèn)題也屬于Android 性能優(yōu)化的一部分。
    1、盡可能減少布局的嵌套層級(jí)
    可以使用 sdk 提供的 hierarchyviewer 工具分析視圖樹,幫助我們發(fā)現(xiàn)沒(méi)有用到的布局。
    2、不用設(shè)置不必要的背景,避免過(guò)度繪制 比如父控件設(shè)置了背景色,子控件完全將父控件給覆蓋的情況下,那么父控件就沒(méi)有必要設(shè)置背景。
    3、使用標(biāo)簽復(fù)用相同的布局代碼
    4、使用標(biāo)簽減少視圖層次結(jié)構(gòu)
    該標(biāo)簽主要有兩種用法:
    1) 因?yàn)樗械?Activity視圖的根節(jié)點(diǎn)都是 FrameLayout,因此如果我們的自定義的布局也是 FragmenLayout的時(shí)候那么可以使用 merge 替換。
    2) 當(dāng)應(yīng)用 Include 或者 ViewStub 標(biāo)簽從外部導(dǎo)入 xml 結(jié)構(gòu)時(shí),可以將被導(dǎo)入的 xml 用 merge 作為根節(jié) 點(diǎn)表示,這樣當(dāng)被嵌入父級(jí)結(jié)構(gòu)中后可以很好的將它所包含的子集融合到父級(jí)結(jié)構(gòu)中,而不會(huì)出現(xiàn)冗余的節(jié)點(diǎn)。
    只能作為 xml 布局的根元素。
    5、通過(guò)實(shí)現(xiàn) View 的延遲加載

  5. android:layout_gravity 和 android:gravity 的區(qū)別?
    第一個(gè)是讓該布局在其父控件中的布局方式,第二個(gè)是該布局布置其字對(duì)象的布局方式。

  6. 關(guān)于LinearLayout 的權(quán)重算法?

         

    如上代碼,如何計(jì)算出每一個(gè)Button的寬度?

    布局大小=剩余空間大小權(quán)重所占比例+設(shè)定的寬度

    Android布局面試題有哪些

  7. scrollView 嵌套 listview 方式除了測(cè)量還有什么方法?

    1. 手動(dòng)設(shè)置 ListView 高度
      經(jīng)過(guò)測(cè)試發(fā)現(xiàn),在 xml 中直接指定 ListView 的高度,是可以解決這個(gè)問(wèn)題的,但是 ListView 中的數(shù)據(jù)是可變的,實(shí)際高度還需要實(shí)際測(cè)量。
      于是手動(dòng)代碼設(shè)置 ListView 高度的方法就誕生了。

    2. 使用單個(gè) ListView 取代 ScrollView 中所有內(nèi)容
      如果滿足頭布局和腳布局的 UI 設(shè)計(jì),直接使用 listview 替代 scrollview

    3. 使用 LinearLayout 取代 ListView
      既然 ListView 不能適應(yīng) ScrollView,那就換一個(gè)可以適應(yīng) ScrollView 的控件,干嘛非要吊死在 ListView 這一棵樹上呢?
      而 LinearLayout 是最好的選擇。但如果我仍想繼續(xù)使用已經(jīng)定義好的 Adater 呢?我們只需要自定 義一個(gè)類繼承自 LinearLayout,為其加上對(duì) BaseAdapter 的適配。

    4. 自定義可適應(yīng) ScrollView 的 ListView
      這個(gè)方法和上面的方法是異曲同工,方法 3 是自定義了 LinearLayout 以取代 ListView 的功能,但如果 我脾氣就是倔,就是要用 ListView 怎么辦?
      那就只好自定義一個(gè)類繼承自 ListView,通過(guò)重寫其 onMeasure 方法,達(dá)到對(duì) ScrollView 適配的效果。

  8. dp 和 px 之間的關(guān)系?
    dp:是 dip 的簡(jiǎn)寫,指密度無(wú)關(guān)的像素。 指一個(gè)抽象意義上的像素,程序用它來(lái)定義界面元素。一個(gè)與密度無(wú)關(guān)的,在邏輯尺寸上,與一個(gè)位于像素密度為 160dpi 的屏幕上的像素是一致的。 要把密度無(wú)關(guān)像素轉(zhuǎn)換為屏幕像素,可以用這樣一個(gè)簡(jiǎn)單的公式: pixels=dips*(density/160)。舉個(gè)例子,在 DPI 為 240 的屏幕上,1 個(gè) DIP 等 于 1.5 個(gè)物理像素。
    布局時(shí)最好使用 dp 來(lái)定義我們程序的界面,因?yàn)檫@樣可以保證我們的 UI 在各種分辨率的屏幕上都可以正常顯示。

    /** * 根據(jù)手機(jī)的分辨率從 px(像素) 的單位 轉(zhuǎn)成為 dp */public static int px2dip(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f);
    }/** * 根據(jù)手機(jī)的分辨率從 dip 的單位 轉(zhuǎn)成為 px(像素) */public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f);
    }

    于是乎,應(yīng)該也能理解android項(xiàng)目中的圖片資源文件,一般我們需要在以下幾個(gè)文件夾中提供不同大小的圖片。

    • xhdpi: 2.0

    • hdpi: 1.5

    • mdpi: 1.0 (baseline)

    • ldpi: 0.75
      如果一張放在mdpi 的圖片加載到內(nèi)存中大小是 10m ,那么遇到hdpi的設(shè)備圖片加載到內(nèi)存中大小是15m。

  9. 什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?
    屏幕尺寸是指屏幕對(duì)角線的長(zhǎng)度。單位是英寸,1英寸=2.54厘米
    屏幕分辨率是指在橫縱向上的像素點(diǎn)數(shù),單位是px,1px=1像素點(diǎn),一般是縱向像素橫向像素,如1280×720
    屏幕像素密度是指每英寸上的像素點(diǎn)數(shù),單位是dpi,即“dot per inch”的縮寫,像素密度和屏幕尺寸和屏幕分辨率有關(guān)。

  10. Android 樣式和主題?
    樣式(Styles):
    Android 允許在外部樣式文件中定義 Android 應(yīng)用程序的 Look 和 Feel ,你可以將定義好的樣式應(yīng)用在不同的視圖(Views)上。你可以在 XML 文件中定義樣式,并將這些樣式運(yùn)用到不同的組件上。使用XML這種方式定義樣式,你只需要配置一些通用的屬性,以后如果需要修改樣式,可以集中修改。
    屬性(Attributes):
    你也可以將單個(gè)屬性應(yīng)用到 Android 樣式上,通常會(huì)在自定義View 的時(shí)候,自定義屬性。
    主題(Themes):
    主題相比單個(gè)視圖而言,是應(yīng)用到整個(gè) Activity 或者 application 的樣式

  11. 如何將Acitivity中的Window的背景圖設(shè)置為空?
    getWindow().setBackgroundDrawable(null);android的默認(rèn)背景是不是為空。

布局適配

在明白上面基礎(chǔ)問(wèn)題的一些基本概念后,這里總結(jié)了一些布局適配的經(jīng)驗(yàn)。
在Android 中 有4種普遍尺寸:小(small),普通(normal),大(large),超大(xlarge)
常見(jiàn)的普遍分辨率: 低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi) 1080P(xxhdpi)

  • 基本設(shè)置
    在中Menifest中添加子元素
    android:anyDensity=”true”時(shí),應(yīng)用程序安裝在不同密度的終端上時(shí),程序會(huì)分別加載xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夾中的資源。
    相反,如果設(shè)為false,即使在文件夾下?lián)碛邢嗤Y源,應(yīng)用不會(huì)自動(dòng)地去相應(yīng)文件夾下尋找資源

  • 適配方案:

    1. 使用wrap_content、math_parent、weight wrap_content:
      根據(jù)控件的內(nèi)容設(shè)置控件的尺寸 math_parent:根據(jù)父控件的尺寸大小設(shè)置控件的尺寸 weight:權(quán)重,在線性布局中可以使用weight屬性設(shè)置控件所占的比例

    2. 使用相對(duì)布局,禁用絕對(duì)布局

    3. 創(chuàng)建不同的layout:每一種layout需要保存在相應(yīng)的資源目錄中,目錄以-為后綴命名。例如,對(duì)大尺寸屏幕(large screens),一個(gè)唯一的layout文件應(yīng)該保存在res/layout-large/中。

    4. 使用9-patch PNG圖片:當(dāng)我們需要使圖片在拉伸后還能保持一定的顯示效果,比如,不能使圖片中的重要像素拉伸,不能使內(nèi)容區(qū)域受到拉伸的影響,我們就可以使用.9.png圖來(lái)實(shí)現(xiàn)

Android Drawable

Drawable屬于輕量級(jí)的、使用也很簡(jiǎn)單,Android把可繪制的對(duì)象抽象為Drawable,不同的圖形圖像資源就代表著不同的drawable類型, 在實(shí)際的開發(fā)過(guò)程中使用@drawable來(lái)使用drawable資源。關(guān)于Drawable更多的請(qǐng)看下圖

Android布局面試題有哪些

Android 5.0 新特性–使用SVG圖片資源
SVG的全稱是Scalable Vector Graphics,叫可縮放矢量圖形。它和位圖(Bitmap)相對(duì),SVG不會(huì)像位圖一樣因?yàn)榭s放而讓圖片質(zhì)量下降。
優(yōu)點(diǎn):
* 圖片的完美適配。SVG 圖像在放大或改變尺寸的情況下其圖形質(zhì)量不會(huì)有所損失。這樣我們大大減少了適配所需要的多種分辨率圖片,而且能夠讓圖片完美適配多種分辨率,減少了APK包大小并提升了用戶體驗(yàn)。
* 尺寸的減小。SVG 是使用XML文件描述的,這種文本格式的圖片尺寸很小,而且便于修改。
* 設(shè)計(jì)上的輕便。在設(shè)計(jì)方面我們可以任意修改SVG圖片的顏色,這對(duì)于某些情況下需要同一張圖像但不同的顏色圖片是非常方便的,只需要修改fill顏色就可以了。比如,單擊下圖片的不同狀態(tài)、按鈕的背景圖片等等。
Android布局面試題有哪些

View 初步了解

  1. View是什么?
    簡(jiǎn)單來(lái)說(shuō),View是Android系統(tǒng)在屏幕上的視覺(jué)呈現(xiàn),也就是說(shuō)你在手機(jī)屏幕上看到的東西都是View。

  2. View是如何繪制出來(lái)的?
    View的繪制流程是從ViewRoot的performTraversals()方法開始,依次經(jīng)過(guò)measure(),layout()和draw()三個(gè)過(guò)程才最終將一個(gè)View繪制出來(lái)。
    后面的章節(jié)會(huì)詳細(xì)講View 繪制過(guò)程,這里只是基礎(chǔ)略帶一下。

  3. View是怎么呈現(xiàn)在界面上的?
    Android中的視圖都是通過(guò)Window來(lái)呈現(xiàn)的,不管Activity、Dialog還是Toast它們都有一個(gè)Window,然后通過(guò)WindowManager來(lái)管理View。Window和頂級(jí)View——DecorView的通信是依賴ViewRoot完成的。

  4. 關(guān)于Android View控件的理解
    Android中控件大致被分為兩類ViewGroup,View。ViewGroup作為容器管理View。Android視圖,是類似于Dom樹的架構(gòu)。父視圖負(fù)責(zé)測(cè)量定位繪制等操作。我們經(jīng)常在用的findViewById 方法代價(jià)昂貴的原因,就是因?yàn)樗?fù)責(zé)至上而下遍歷整棵控件樹,來(lái)尋找View實(shí)例,在重復(fù)操作中盡量少用?,F(xiàn)在在用的很多控件都是直接或者間接繼承自View的,為了方便理解可看下圖

    Android布局面試題有哪些

  5. View和ViewGroup什么區(qū)別?
    Android的UI界面都是由View和ViewGroup及其派生類組合而成的。其中,View是所有UI組件的基類,而ViewGroup是容納這些組件的容器,其本身也是從View派生出來(lái)的。AndroidUI界面的一般結(jié)構(gòu)可參見(jiàn)

    Android布局面試題有哪些

    需要注意的是嵌套次數(shù)最好不要超過(guò)10層,否則會(huì)降低效率,上圖是3層

  6. Android View刷新機(jī)制?
    在Android的布局體系中,父View負(fù)責(zé)刷新、布局顯示子View;而當(dāng)子View需要刷新時(shí),則是通知父View來(lái)完成

  7. RelativeLayout和LinearLayout性能比較?
    1.RelativeLayout會(huì)讓子View調(diào)用2次onMeasure,LinearLayout 在有weight時(shí),也會(huì)調(diào)用子View2次onMeasure
    2.RelativeLayout的子View如果高度和RelativeLayout不同,則會(huì)引發(fā)效率問(wèn)題,當(dāng)子View很復(fù)雜時(shí),這個(gè)問(wèn)題會(huì)更加嚴(yán)重。如果可以,盡量使用padding代替margin。
    3.在不影響層級(jí)深度的情況下,使用LinearLayout和FrameLayout而不是RelativeLayout。

  8. Android UI界面架構(gòu)理解
    每個(gè)Activity,Dialog,Toast都包含一個(gè)PhoneWindow對(duì)象,PhoneWindow設(shè)置DecorView為應(yīng)用窗口的根視圖。在里面就是熟悉的TitleView和ContentView,沒(méi)錯(cuò),平時(shí)使用的setContentView()就是設(shè)置的ContentView。
    Android布局面試題有哪些

“Android布局面試題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


當(dāng)前名稱:Android布局面試題有哪些
文章位置:http://weahome.cn/article/jpsjgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部