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完成 是否是很简单 吃鸡

相关文章
相关标签/搜索