1. 程式人生 > >使用autoLayout用px寫佈局完成適配安卓下的適配

使用autoLayout用px寫佈局完成適配安卓下的適配

首先,專案初期 需要根據設計師的效果圖來搭建佈局, 設計師給的尺寸是1334x752的,然後設計圖上全部標註的是畫素,  如何弄一個萬能適配的佈局,且根據px來寫,這成為了一個問題;

看了需求,在網上借鑑了鴻洋大神,是一個比較好的方案:

第一步: 新增依賴

dependencies {
    compile 'com.zhy:autolayout:1.4.5'
}
第二步:

在你的專案的AndroidManifest中註明你的設計稿的尺寸。 在application中

 <meta-data
            android:name="design_width"
            android:value="752" />
        <meta-data
            android:name="design_height"
            android:value="1334" />
第三步:

讓你的Activity繼承自AutoLayoutActivity.如果不想繼承AutoLayoutActivity,則在編寫佈局的時候雨,將

LinearLayout -> AutoLinearLayout
RelativeLayout -> AutoRelativeLayout
FrameLayout -> AutoFrameLayout

注意一一對應關係

目前支援的屬性:

layout_width
layout_height
layout_margin(left,top,right,bottom)
pading(left,top,right,bottom)
textSize
maxWidth, minWidth, maxHeight, minHeight

注意事項:

對於ListView,RecyclerView的Item適配,區域性寫px是無效的,因為外層非AutoXXXLayout,加上一行程式碼

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    ViewHolder holder = null;
    if (convertView == null)
    {
        holder = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
        convertView.setTag(holder);
        //對於listview,注意新增這一行,即可在item上使用高度
        AutoUtils.autoSize(convertView);
    } else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    return convertView;
}
對於RecyclerView,則加入
public ViewHolder(View itemView)
{
      super(itemView);
      AutoUtils.autoSize(itemView);
}

//...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
     View convertView = LayoutInflater.from(mContext).inflate(R.layout.recyclerview_item, parent, false);
     return new ViewHolder(convertView);
}
一定要記得LayoutInflater.from(mContext).inflate使用三個引數的方法!


後記:在實際的開發,對於適配問題,排列布局,最建議的還是使用權重來進行適配,不同解析度的手機當適配一樣的時候,體驗會很好

最後貼上鴻洋大神的gitHub原始碼地址:

https://github.com/hongyangAndroid/AndroidAutoLayout

相關推薦

使用autoLayoutpx佈局完成

首先,專案初期 需要根據設計師的效果圖來搭建佈局, 設計師給的尺寸是1334x752的,然後設計圖上全部標註的是畫素,  如何弄一個萬能適配的佈局,且根據px來寫,這成為了一個問題; 看了需求,在網上借鑑了鴻洋大神,是一個比較好的方案: 第一步: 新增依賴 dependen

python完成一個員工管理系統 要求儲存員工的工號、姓名、年齡、性別、工資 1、員工錄入 2、查詢員工資訊 3、修改員工資訊 4、刪除 5、根據工號檢視 6、退出

   完成一個員工管理系統    要求儲存員工的工號、姓名、年齡、性別、工資    1、員工錄入    2、查詢員工資訊    3、修改員工資訊    4、刪除  &nb

UI限定符

分辨率 小寫 演示 VG 應用程序 sim 無效 前綴 實用 引言 對於程序在不同尺寸的Android機器上執行,對UI的適用性造成了額外的開銷,只是限定符

Android基礎——6.0新權限系統

jsb 安全 認同 相對 選項 blank tar 也會 返回 在安卓6.0版本以後,新的權限系統出現了,為了更好的保護用戶的安全,新的權限系統需要開發者在代碼中手動申請,所以為了適配6.0權限系統,我們不得不學習權限系統 安卓6.0新權限系統分類有兩種 普通權限(nor

tcgames無需模擬器電腦玩手遊助手最手機機型排行榜

tcgames用什麼手機效果最好?tcgames玩刺激戰場什麼機型最流暢畫質最高清?tcgames是一款無需安卓模擬器也可以在電腦上用滑鼠鍵盤操作遊戲並且匹配手機玩家的工具。因為其不佔用電腦記憶體配置的優點是很多手遊玩家特別是刺激戰場、全軍出擊等吃雞手遊玩家和遊戲主播的首選遊戲輔助神器。 但是不

專案實戰之APP版本升級更新,7.0

前言 APP的版本升級主要分為兩種方式: 1.應用市場升級 2.應用內升級 而應用內升級的方式是目前大多數APP採用的升級更新方式。 應用內升級的模式 按照不同的業務需求又可以分為兩種: 1,強制性更新 如果APP有更新,那麼則彈出更新提示對話方塊,並且

十個例子,教你統計學方法高效完成機器學習專案()【楚才國科】

五、資料準備: 資料一般不會直接拿來建模。為了改變資料的形狀或結構,使它更適用於選定的問題架構或學習演算法,需要對資料進行必要的轉化。 資料準備也會用到統計模型,例如: 1、縮放。例如標準化和規範化。 2、編碼。例如整數編碼和獨熱編碼。 3、變換。例如 Box-Cox

Android6.0藍芽通訊實現過程

實現需要的許可權:由於安卓4.x版以上的版本使用藍芽,需要開啟定位許可權才能搜尋到附近的藍芽裝置 1 2 3 4 五 <uses-permission android:name="android.permission.BLUETOOTH"/>

【android】應用圖示Drawable轉Bitmap,8.0

相信大家在載入應用圖示的時候,經常會將得到的Drawable轉成Bitmap,程式碼如下: Drawable drawable = mPackageManager.getApplicationIcon(packageName); return ((BitmapDrawable) drawabl

螢幕方案(根據今日頭條方案,升級版)

前言 螢幕適配方案有很多,比如原生的dp,鴻洋大神的AutoLayout,寬高限定符,今天我用缺點比較小的今日頭條方案 使用效果 測試後可以適配我身邊的

(Android)7.0檔案系統

注: 安卓6.0是許可權管理的變更,要想使用危險許可權,必須程式碼中主動請求相關許可權;到了安卓7.0中,即使你主動請求了讀寫許可權,你不一定能夠讀取你想要的檔案,因為7.0的檔案系統加密了,使用方式和以前不同了,如果app不能即使的相容7.0的新特性,很可能

沉浸式狀態列的新姿勢

Github Demo: https://github.com/lliuguangbo/AutoSystemBar 針對狀態列,官方從4.4版本開始支援,但是4.4和5.0以上API是不同的,6.0以上提供了兩種狀態列圖示樣式 分別是白色和黑色樣式。 針對狀態列圖示樣式的修改,小米

Unity快速劉海屏(又簡單又快 了O版本和P版本)

劉海屏適配,其實就是知道劉海高度(橫屏遊戲),來對ui進行偏移 所以劉海屏適配的關鍵是獲取劉海高度        NotchFit是一款Android端的劉海屏適配庫,適配了O版本和P版本,它遮蔽了不同廠商不同裝置不同系統版本對劉海屏適配帶來的一系列的

劉海

先炫富! 三種情況會涉及到劉海的適配: 1.有狀態欄的情況(不是全屏FULLSCREEN狀態)不需要適配劉海,如果沒有設定狀態列顏色預設狀態列為黑色背景白色字型和圖示,這種情況不會受到劉海的影響,因為劉海的高度就是狀態列的高度,只要有狀態列的app不需要進行劉

jquery的json省市縣三級聯動

<form action="#" name="myform"> <label>省</label><select name="provice" id="provice"><option value="-1">請輸入

】沉浸式 實現主題樣式的更改等

package net.fineteam.publicsocial.utils; import android.annotation.TargetApi; import android.app.Activity; import android.content.Cont

-圖片問題,問UI設計師要什麼樣的圖,然後圖片放在哪個資料夾

當時自己剛開始做安卓的時候,UI設計師問我,要什麼格式的圖? WHAT?現在心裡終於有點那啥數了。 首先,我們要用的圖片資源能放在哪? 圖1 圖2 其實mipmap與drawable並沒有太嚴格的區別。只是mipmap在圖片縮放上有一定的圖片

unity如何全面屏?

使用unity打包Android應用安裝到全面屏手機上,會發現應用兩邊會有黑條,並且獲取的Screen.width和Screen.height都是非完全的螢幕尺寸。這是因為google android為了向下相容。所以需要在AndroidManifest.xml中開啟選項即可

螢幕方式(一):res生成各解析度檔案的方式

螢幕適配的方式有很多,有的公司採用這種方式,在這裡記錄一下 將下面程式碼複製到文字中,檔名為   GenerateValueFiles.java 下文程式碼的主函式中填寫基準寬高後再進行以下操作(在main方法中將basW和baseH改成UI標註的基準寬高) 然

ping 原理與ICMP協議 && tcpdump和wireshark抓網路包 && Fiddler進行網路抓包

(1)ping 的原理       ping 程式是用來探測主機到主機之間是否可通訊,如果不能ping到某臺主機,表明不能和這臺主機建立連線。ping 使用的是ICMP協議,它傳送icmp回送請求訊息給目的主機。ICMP協議規定:目的主機必須返回ICMP回送應答訊息給源主機