Android 屏幕適配

第一種 AutoLayout方法java

第一步:導依賴android

dependencies {
    //autoLayout依賴
    compile 'com.zhy:autolayout:1.4.3'
}

manifests---application標籤內git

<!--註明設計稿的尺寸-->
<meta-data android:name="design_width" android:value="768">
</meta-data>
<meta-data android:name="design_height" android:value="1280">
</meta-data>

而後在你的PreView面板,選擇分辨率一致的設備github

第二部建立 App類app

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //設備的物理高度進行百分比化:
        AutoLayoutConifg.getInstance().useDeviceSize();
    }
}

第三部ide

public class MainActivity extends AutoLayoutActivity

第四部工具

XML佈局文件內 隨心因此的用PX設置大小啦佈局

<TextView
    android:text="歡迎"
    android:gravity="center"
    android:layout_width="200px"
    android:layout_height="300px" />
<ImageView
    android:src="@mipmap/ic_launcher"
    android:layout_width="300px"
    android:layout_height="300px" />

固然你也能夠不去繼承AutoLayoutActivity來使用。spa

AutoLayoutActivity的用法其實是完成了一件事:設計

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

若是你不想繼承AutoLayoutActivity,那麼你就得像Google的百分比庫同樣,去用AutoXXXLayout代替系統原有的XXXLayout。固然,你能夠放心的是,全部的系統屬性原有的屬性都會支持,不過根佈局上就不支持px的自動百分比化了,可是通常根佈局都是MATCH_PARENT,而上述的方式,根佈局也是能夠直接px的百分比化的。

 

注意事項

  • 對於ListView

對於ListView這類控件的item,默認根局部寫「px」進行適配是無效的,由於外層非AutoXXXLayout,而是ListView。可是,不用怕,一行代碼就能夠支持了:

@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;
}

注意AutoUtils.autoSize(convertView);這行代碼的位置便可。demo中也有相關實例。

  • 對於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使用三個參數的方法

----------------------------------------------------------------------------------------------------------

第二種方法  百分比適配方法

首先 下載大神自動生成工具(內置了經常使用的分辨率)

https://github.com/hongyangAndroid/Android_Blog_Demos/tree/master/blogcodes/src/main/java/com/zhy/blogcodes/genvalues

下載:jar包

解壓res

步驟1:以某一分辨率爲基準,生成全部分辨率對應像素數列表

步驟2:把生成的各像素數列表放到對應的資源文件

步驟3:根據UI設計師給出某一分辨率設計圖上的尺寸,找到對應像素數的單位,而後設置給控件便可

<ImageView
    android:src="@mipmap/ic_launcher"
    android:layout_width="@dimen/x320"
    android:layout_height="@dimen/y400" />

 

OK完成 是否是很簡單 吃雞

相關文章
相關標籤/搜索