1. 程式人生 > >Android 佈局優化的幾個技巧

Android 佈局優化的幾個技巧

/**
 * Space is a lightweight View subclass that may be used to create gaps between components
 * in general purpose layouts.
 */
public final class Space extends View {
    /**
     * {@inheritDoc}
     */
    public Space(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        if (getVisibility() == VISIBLE) {
            setVisibility(INVISIBLE);
        }
    }

    /**
     * {@inheritDoc}
     */
    public Space(Context context, AttributeSet attrs, int defStyleAttr) {
        this(context, attrs, defStyleAttr, 0);
    }

    /**
     * {@inheritDoc}
     */
    public Space(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    /**
     * {@inheritDoc}
     */
    public Space(Context context) {
        //noinspection NullableProblems
        this(context, null);
    }

    /**
     * Draw nothing.
     *
     * @param canvas an unused parameter.
     */
    @Override
    public void draw(Canvas canvas) {
    }

    /**
     * Compare to: {@link View#getDefaultSize(int, int)}
     * If mode is AT_MOST, return the child size instead of the parent size
     * (unless it is too big).
     */
    private static int getDefaultSize2(int size, int measureSpec) {
        int result = size;
        int specMode = MeasureSpec.getMode(measureSpec);
        int specSize = MeasureSpec.getSize(measureSpec);

        switch (specMode) {
            case MeasureSpec.UNSPECIFIED:
                result = size;
                break;
            case MeasureSpec.AT_MOST:
                result = Math.min(size, specSize);
                break;
            case MeasureSpec.EXACTLY:
                result = specSize;
                break;
        }
        return result;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(
                getDefaultSize2(getSuggestedMinimumWidth(), widthMeasureSpec),
                getDefaultSize2(getSuggestedMinimumHeight(), heightMeasureSpec));
    }
}
佈局檔案如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/lightgray"
    android:divider="@drawable/divider"
    android:orientation="vertical"
    android:showDividers="beginning|end|middle">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="?android:actionBarSize"
        android:background="@color/white"
        android:drawableLeft="@drawable/ic_personal_invitation"
        android:drawablePadding="@dimen/left_margin"
        android:drawableRight="@drawable/icon_message_more"
        android:gravity="center_vertical"
        android:padding="@dimen/left_margin"
        android:text="未完成事項"
        android:textSize="@dimen/common_text_size_36" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="?android:actionBarSize"
        android:background="@color/white"
        android:drawableLeft="@drawable/ic_personal_notice"
        android:drawablePadding="@dimen/left_margin"
        android:drawableRight="@drawable/icon_message_more"
        android:gravity="center_vertical"
        android:padding="@dimen/left_margin"
        android:text="未完成事項"
        android:textSize="@dimen/common_text_size_36" />


    <Space
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="@color/black" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="?android:actionBarSize"
        android:background="@color/white"
        android:drawableLeft="@drawable/ic_personal_opinion"
        android:drawablePadding="@dimen/left_margin"
        android:drawableRight="@drawable/icon_message_more"
        android:gravity="center_vertical"
        android:padding="@dimen/left_margin"
        android:text="檢查更新"
        android:textSize="@dimen/common_text_size_36" />

</LinearLayout>

效果:

相關推薦

Android 佈局優化技巧

/** * Space is a lightweight View subclass that may be used to create gaps between components * in general purpose layouts. */ public final class Space

Android開發的關鍵指標以及如何優化

Android開發的幾個關鍵指標 1.體積的佔用。 2.記憶體的佔用。 3.CPU的佔用。 4.雲端可控。 如何優化: 1.體積上的優化 1)使用混淆;混淆可以去掉外部sdk的冗餘程式碼,把長變數的名字自動分配一個短的名字; 2)使用指令碼控制去掉無用的資源,比如圖片和某

android studio程式猿必須要會的技巧 知曉當前是那個活動?隨時隨地的退出程式?啟動活動的最佳方法?

             程式猿必須要會的幾個技巧!!!進入公司前必讀!!! 我們主要介紹以下三個技巧 1.知曉當前是那個活動 你可能會奇怪,我自己編的程式我怎麼可能不知道當前執行的是哪一個程式呢,很不幸的是,當你進入一家企業的時候,更有可能接收的是別人已經寫好的程式碼

android多渠道打包&&打包小技巧

android多渠道打包 多渠道的意義 更詳細的統計app被下載的途徑 檢視app在每個渠道的表現 有利於app的推廣 使用友盟實現多渠道打包 多渠道打包的原理 為每個渠道的apk指定一個唯一的識別符號 android中通

【UI佈局優化Android佈局優化種方式

在Android中,佈局優化越來越受到重視,下面將介紹佈局優化的幾種方式,這幾種方式一般可能都見過,因為現在用的還比較多,我們主要從兩個方面來進行介紹,一方面是用法,另一方面是從原始碼來分析,為什麼它能起到優化的效果。 一、幾種方式的用法 1、佈局重用<

分針網——每日分享:網站易用性的解讀及提高易用性技巧

什麽是網站易用性? 引用維基百科上對易用性的解釋:易用性(usability)是一種以使用者為中心的設計概念,易用性設計的重點在於讓產品的設計能夠符合使用者的習慣與需求。以因特網網站的設計為例,希望讓使用者在瀏覽的過程中不會產生壓力或

提升vector性能的技巧

嘗試 連續 指針和引用 數據結構 ring 情況下 但是 real stl 原文:https://www.sohu.com/a/120595688_465979 Vector 就像是 C++ STL 容器的瑞士軍刀。Bjarne Stoutsoup 有一句話 – “一般情況

快速錄入30Excel表格,職場老手用這技巧,只花了10分鐘!

職場辦公最怕不會用Excel軟體,一天好多個Excel表格,全部都要快速錄入。新人進入職場都快哭了,怎麼辦?職場老手都在用的這些技巧,效率提升超快!再也不怕工作做不完。大家快趕緊一起學起來啦! 輸入大寫數字 很多職場做會計財務之類的朋友都知道,當Excel表格輸入金額需要用中文大寫輸入時,非常的痛

AndroidAndroid WebView 的操作

1. 開啟網頁時不呼叫系統瀏覽器, 而是在本WebView中顯示: mWebView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebVi

無論老手新手,這技巧都能夠讓你對word更加得心易手!

對於公司職員或者學生黨來說,都會接觸到word文件,今天就教教大家幾個常用的word技巧,讓大家對word更加得心易手,然後就是一定要記得每天學習哦! 將數字轉換成大寫金額全選需要轉換的數字,點選【插入】--【插入數字】,在彈出的【數字】選項中從【數字型別】中可以找到大寫金額,點選確定就可以轉換了。

科技專案申報的技巧

科技創新是提高社會生產力和綜合國力的戰略支撐,隨著國家對科技創新的資金投入逐年增加,各級政府對企業扶持力度的加大,很多企業積極開展科研專案立項,參與科研專案申報。 然而很多企業在科技專案申報的過程中會出現各種各樣的問題,導致明明滿足了一些科技專案申報的基本條件,卻拿不下這些科技專案補貼,以下對科技專案申

Android佈局優化之merge標籤詳解

我們都知道View的繪製流程需要經歷measure、layout、draw這個三個過程,如果佈局巢狀層次比較深的話,每一步都需要進行遍歷所有子View進行對應的measure、layout、draw過程,由此就會降低繪製效率,巢狀越多,耗時就越多;其實不光光只會影響view的繪製效率,同

SCP和Rsync遠端拷貝的技巧

scp是secure copy的簡寫,用於在Linux下進行遠端拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器,而且scp傳輸是加密的。可能會稍微影響一下速度。當你伺服器硬碟變為只讀 read only system時,用scp可以幫你把檔案移出來。另外,scp還非常不

深入淺出視訊直播原始碼搭建法,社交APP開發入門放入技巧

之所以今天寫下這篇文章,主要是近期視訊軟體的爭霸賽可謂是鬧的沸沸揚揚,直播視訊平臺基本格局已經定下,短視訊軟體這邊年的爭鬥成了看點,而夾在兩者中間的一對一社交APP則顯得有些默默無聞了。但是如果你多瞭解一下,你會發現,如今的社交交友APP也是一鳴驚人了。現如今的

想提升著陸頁轉化能力,也許需要的僅是技巧

隨著移動網際網路的成熟,各行各業與網際網路的融合也是越來越強。在這個大環境下獲客成本就變得越來越高,很多從業者感到流量紅利結束,推廣越來越難做了。 然後SEMer逐漸意識到了要精細化運用操作,最大化的利用現有資源。所以大家都在充分的挖掘潛在流量,精細化各個營銷環

關於Autolayout和Masonry自動佈局

自動佈局 02 Mar 2016Comments 前言 最近遇到一個複雜檢視:根控制器裡面有上下兩個子控制器,子控制器中各自實現類似PageView的檢視,然後PageView的每一頁是一個WebView,同時中間有個可拖拽的控制元件,實現上下兩個控制器檢視的大小調整。採用子

上海達內分享:新手入門學習PHP的技巧

目前的PHP人才供求緊張,其高階人才更是一將難求。很多人選擇PHP,也是追求其高薪,那我們在學習PHP應該注意些什麼呢? 蓋樓先要打地基,學習PHP基礎尤為重要,要有紮實的知識做基礎,而知識的豐富可以讓你在解決問題的時候遊刃有餘。開發規範要養成良好的習慣,專案管

關於eclipse下開發android應用的常用外掛

  1.adt外掛 https://dl-ssl.google.com/android/eclipse/    這肯定是不能少了的.有這個外掛,其實是將eclipse打造成了一個高階的android應用開發IDE,必要性可想而知.     2.egit外掛 http://d

Android 系統最近版本的更新,你瞭解嗎?

1. 簡介 軟體開發這個行業基本可以認定是技術變化最快的行業,作為軟體開發者為了不被淘汰,需要時刻關注新技術的變化,可以不去實踐新技術但是需要對新技術有一定的巨集觀認識。Android系統每年都會有版本更新,作為Android開發者,怎能不瞭解更新的新特性、新技術,本篇文章

技巧,值得每一個學Python人收藏

閱讀本文大概需要3分鐘 閱讀本文大概需要3分鐘 1.一行程式碼,巧妙求解 列出1到20的數字,若是3的倍數就用apple代替,若是5的倍數就用orange代替,若既是3的倍數又是5的倍數就用appleorange代替 print ['apple'[i%35::]+'orange'[i