Android 屏幕适配

第一种 AutoLayout方法

第一步:导依赖

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

manifests---application标签内

<!--注明设计稿的尺寸-->
<meta-data android:name="design_width" android:value="768">
</meta-data>
<meta-data android:name="design_height" android:value="1280">
</meta-data>

然后在你的PreView面板,选择分辨率一致的设备

06142851_3DFd.jpg

第二部创建 App类

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

第三部

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来使用。

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包

180bc1c3d637905c60e62aaac678835147b.jpg

解压res

0bd42ada3abaf3416c3cb4d21b185e3c256.jpg

步骤1:以某一分辨率为基准,生成所有分辨率对应像素数列表

步骤2:把生成的各像素数列表放到对应的资源文件

17203135_kRGN.jpg

步骤3:根据UI设计师给出某一分辨率设计图上的尺寸,找到对应像素数的单位,然后设置给控件即可

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

 

OK完成 是不是很简单 吃鸡

 

转载于:https://my.oschina.net/u/3698786/blog/1575254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值