精华内容
下载资源
问答
  • Android Studio dimens 屏幕适配工具 ScreenMatch
    2021-06-03 10:12:22

    1.首先下载安装ScreenMatch插件,Ctrl+Alt+S打开Plugins

    2.下载dimens.xml并存放在values目录下

    3.生成values-sw384dp~values-sw1365dp,生成步骤:

        3.1.使用鼠标左键点击任意文件夹

     

        3.2.点击ok

        3.3.弹出Over, adapt successful提示表示生成成功,继续点击OK

    参考:Android 官方屏幕适配之ScreenMatch_duanchuanzhi的博客-CSDN博客_screenmatch

    更多相关内容
  • 使用Androidstudio进行屏幕适配

    千次阅读 2021-06-05 01:34:46
    一、使用尺寸单位进行屏幕适配1.首先记住160dpi(每英寸点数)的屏幕,1dp=1dip=1px(像素)2.适配步骤1、用Android模式打开项目,在res文件新建文件夹values-960x540 和文件夹values-1500x12002、在project模式下打开...

    一、使用尺寸单位进行屏幕适配

    1.首先记住160dpi(每英寸点数)的屏幕,1dp=1dip=1px(像素)

    2.适配步骤

    1、用Android模式打开项目,在res文件新建文件夹values-960x540 和文件夹values-1500x1200

    2、在project模式下打开项目,在values-960x540 新建dimens.xml文件,在里面创建dimen标签,代码如下

    200dp

    3、在project模式下打开项目,在values-1500x1200新建dimens.xml文件,在里面创建dimen标签,代码如下

    500dp

    4、修改activity_main.xml里面的文件,添加button控件,代码如下

    android:layout_width="@dimen/app_width"

    android:layout_height="wrap_content"

    android:text="@string/title" />

    3.效果展现

    我的模拟器配置

    e29ba1fa5a9100d0cc12cdd45b10ef5a.png

    所以

    android:layout_width=”@dimen/app_width”等于

    android:layout_width=”200dp”

    89afba604193bfb6e1d31fdedd1d7ac9.png

    二、图片适配

    1、操作流程

    1.在project模式下打开项目,在mipmap-mdpi 文件夹下放入图片fruit

    02ecc1d9fc5d22539aa8842aaa19450c.png

    2.在project模式下打开项目,在mipmap-xhdpi文件夹下放入图片fruit

    1faadb5e024869b13f952acb500f27aa.png

    3.在activity_main.xml中背景中进行运用

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@mipmap/fruit"

    tools:context="com.example.myapplication.MainActivity">

    android:layout_height="wrap_content"

    android:text="@string/title" />

    2、效果展现,我的适配器你们已经给出,所以一定是梨子

    79eadd44996491be85d906db9d3a6457.png

    三、文字适配

    1、用Android模式打开项目,在res文件新建文件夹values-en

    2、在project模式下打开项目,values-en 中粘贴values中的strings文件

    3、修改其中的部分代码

    my app

    hello world

    4、在activity_main.xml调用

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@mipmap/fruit"

    tools:context="com.example.myapplication.MainActivity">

    android:layout_height="wrap_content"

    android:text="@string/title" />

    2、效果展现,我的是汉语

    939693c3310a0e495747d4b60bfba09a.png

    四、布局适配

    1、操作流程

    1.用Android模式打开项目,在res文件新建文件夹layout-land文件夹

    2.在project模式下打开项目,在layout-land粘贴activity_main.xml修改里面的内容,背景变成了苹果

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@mipmap/apple"

    tools:context="com.example.myapplication.MainActivity">

    android:layout_height="wrap_content"

    android:text="@string/title" />

    2.效果展现

    1f43727f6f7542132438f8997f2d409c.png

    80cd5ec650e0f86f634b92cf0a6601b2.png

    展开全文
  • 文章目录前言一、屏幕适配的内在逻辑1....本文我们来介绍一下dp、dpi、density这些名词之间的关系,以及大神 JessYan 的屏幕适配算法AndroidAutoSize的基本用法。 Github导航:AndroidAutoSize官方代码 一、屏幕适配


    前言

    屏幕适配是一款APP的基本素养,需要保证在不同型号的手机上都能正常显示,并且各部件的显示比例和设计图一致。本文我们来介绍一下dp、dpi、density这些名词之间的关系,以及大神 JessYan 的屏幕适配算法AndroidAutoSize的基本用法。

    Github导航:AndroidAutoSize官方代码


    一、屏幕适配的内在逻辑

    1.dp、px、dpi和density

    • px:像素;
    • dpi:dots per inch,直接来说就是一英寸多少个像素点。常见取值 120(低),160(中),240(高),320(超高),480(超超高)。一般称作像素密度,不同设备的 dpi 往往不同;
    • dp:也就是 dip(Density independent pixels),是一种长度单位,与设备的像素密度值无关,因此也称为设备无关像素。dp 和 px 之间存在换算关系:1 dp = 1*(dpi/160)px。

    我们可以举个例子具体说明 dpi 是什么:

    假设有一部手机,屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240px * 320px,则我们可以计算出在这部手机的屏幕上:

    每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),这里160dpi就是像素密度。

    dpi 和 像素密度ppi 都是一种密度值,二者也经常被混着用,但是我查资料发现 dpi 是指点密度,用于打印机; ppi 指像素密度,用于显示器。由于像素是一个个小方格,因此一个像素中可能包含多个点。不过在开发过程中,这俩的含义应该被混淆了,直接把 dpi 当成像素密度就行。

    dp 这个单位有什么用呢?

    不同的机型,dpi 是不一样的。假如某个组件的宽度以像素 px 为单位,大小为100,那么在 dpi=160 的设备上,它实际显示宽度是 100/160=0.625 英寸;但是在 dpi=320 的设备上,它是实际显示宽度就成了 100/320=0.3125 英寸。这时组件的观感以及屏幕布局会发生很大变化。

    因此使用 px 作为单位就非常不灵活,并且泛化性差。dp 则较好地解决了这个问题。dp 不受设备像素密度值 dpi 的影响,它是一个固定的长度,即 1/160=0.00625英寸。

    以 dp 为单位可以使组件的实际显示宽度在不同设备上保持为固定值。开发时以160 dpi 为基准(称为标准 dpi),对于 160dpi 的设备,1dp=1px,对于320dpi 的设备,1dp=(320/160)px=2px。其他同理。
    在这里插入图片描述
    Density

    Density 直译是密度,但它其实是一种密度比,计算方法是 :
    Desity=当前设备的dpi/160dpi
    即当前设备的像素密度与标准像素密度的比值。每个设备都有自己的 Density。

    2.获取手机屏幕尺寸/dp

    如果我们是在一部实验机上开发app,没有设计师给我们设计图纸,部件大小都根据它在实验机上的显示来调整(就如同我的开发过程一样…)这样开发出来的app自然是和实验机的屏幕匹配的,但在其他机型上大概率会显示失常。

    这时就需要适配算法的帮助,但在使用适配算法之前,我们需要知道这台实验机显示的长度和宽度是多少,单位是dp(因为我们的组件基本是以 dp 为单位的,为了屏幕适配我们需要知道设计图的dp值,并根据不同屏幕调整组件的dp值,以保证显示比例一致)
    有了这两个值,就相当于获得了设计图纸的尺寸,而这个尺寸是适配算法必要的输入。

    那么如何获得手机屏幕的显示尺寸呢?

    • 可以推导出一个计算公式:
      手机宽度dp值 = 手机实际宽度像素px / 手机屏幕密度比density

    只要把手机和电脑连接,在Adroid Studio中使用 DisplayMetrics 即可:

    DisplayMetrics dm = getResources().getDisplayMetrics();
    //手机宽度dp值 = 手机实际宽度像素px / 手机屏幕密度比
    float widthDP = dm.widthPixels / dm.density;
    // dm.heightPixels 表示手机实际高度像素px
    float heightDP = dm.heightPixels / dm.density;
    Log.d("MainActivity", "手机屏幕宽度/dp是: "+widthDP);
    Log.d("MainActivity", "手机实际宽度像素dp是: "+dm.widthPixels);
    Log.d("MainActivity", "手机屏幕密度比是: "+dm.density);
    Log.d("MainActivity", "手机屏幕显示dpi是: "+dm.densityDpi);
    

    widthDP 就是我们获得的手机宽度/dp,手机高度可以用同样方式获得。

    需要使用 dm.densityDpi 可以获得手机屏幕实际显示的像素密度,不要使用手机官网给出的像素密度 ppi 值,这两个值大概率不一样。

    二、AndroidAutoSize使用

    1.基本用法

    AndroidAutoSize在布局中 dp、sp、pt、in、mm 所有的单位都能支持,唯独不支持 px,可以和之前的一版适配算法AndroidAutoLayout搭配使用。在代码的README中作者详细介绍了如何使用AndroidAutoSize完成适配,并把dp、sp称为主单位,pt、in、mm称为副单位。本文中使用dp进行布局。

    AndroidAutoSize的用法可以分为两步:

    1. 在 build.gradle 中引入
    implementation 'me.jessyan:autosize:1.2.1'
    
    1. 在 AndroidManifest.xml 中设定设计图纸中使用的屏幕大小(这里的单位是dp),如果是自己拿着实验机开发的话,可以参考第一节中“获取手机屏幕尺寸”的部分来获得伪设计图尺寸,填入程序即可。
      下面代码中value后面填入尺寸,width对应宽度,height对应高度。
    <application>
            <meta-data
                android:name="design_width_in_dp"
                android:value="360"/>
            <meta-data
                android:name="design_height_in_dp"
                android:value="780"/>
    </application>
    

    2.简单自定义方法

    由于不同机型的屏幕长宽比不同,因此为了保证组件的形状不发生变化,AndroidAutoSize中只进行宽度适配或高度适配,不能宽度与高度同时适配

    在默认设置下,AndroidAutoSize会进行宽度适配,也就是说之前<meta-data android:name="design_height_in_dp" android:value="780"/>这个值的填写是不起作用的。

    通常情况下,宽度适配的视觉效果较好,此时高度没有适配。那么可能出现在某些屏幕上组件显示不全,我们可以采用 ScrollView 使内容可以上下滑动显示, 这样就相当于完成了高度适配。


    当然,如果我们想要高度适配,也是可以利用AndroidAutoSize设置的。方法如下:

    假如我们希望对活动CustomAdaptActivity进行自定义设置,就让其实现CustomAdapt接口,并改写 isBaseOnWidth() 与 getSizeInDp() 方法。

    public class CustomAdaptActivity extends AppCompatActivity implements CustomAdapt {
    
        @Override
        public boolean isBaseOnWidth() {
            return false;
        }
    
        @Override
        public float getSizeInDp() {
            return 667;
        }
    }
    

    其中 isBaseOnWidth() 中 return true 时表示宽度适配,return false 时表示高度适配。getSizeInDp() 用来改变当前 activity 参考的设计图尺寸,可以和全局设计图尺寸不同。若 return 0 则表示和全局保持一致,若return 的是一个非零值,就把当前 Activity 的设计图尺寸改成这个值。

    需要注意的是,如果在 isBaseOnWidth() 中选择了宽度适配,那么 getSizeInDp() 的返回值就代表当前 Activity 的设计图宽度,若在 isBaseOnWidth() 中选择了高度适配,则 getSizeInDp() 的返回值代表当前 Activity 的设计图高度。

    如果在某一个 Activity 中不想要屏幕适配,可以在该 Activity 中实现 CancelAdapt 接口:

    public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {
    
    }
    

    关于屏幕宽度适配还有另外一种方法,不过不如 AndroidAutoSize 简单好用,适用性不够强,大家可以看一看:
    Android dp方式的屏幕适配

    总结

    我之前在屏幕适配这里然了好久,没有搞清楚屏幕像素密度 ppi 和开发时用到的 dpi 是两个不同的东西,虽然定义一样,但是不能用手机官方公布的 ppi 或者自己用手机参数计算出来的 ppi 直接当成 dpi 使用。

    要想获得一个手机的 dpi, 还是需要把手机连接到电脑,用第一节中“获取手机屏幕尺寸”介绍的方法来获取手机显示的 dpi。

    还有个提醒,如果发现在手机上的实验效果和自己预想的不一样,可以看一下是不是手机设置的字体问题 (⊙﹏⊙)

    文中若有不正确的地方欢迎大家指出~

    展开全文
  • 最新最全文章(2018-08-25):https://blog.csdn.net/fesdgasdgasdg/article/details/82054971 dp方式屏幕适配原理请看:http://blog.csdn.net/fesdgasdgasdg/article/details/52325590  h...

    最新最全文章(2018-08-25):https://blog.csdn.net/fesdgasdgasdg/article/details/82054971

    dp方式屏幕适配原理请看:http://blog.csdn.net/fesdgasdgasdg/article/details/52325590

                                                http://download.csdn.net/download/fesdgasdgasdg/9913744

    bat批处理文件的使用方式请看:http://blog.csdn.net/fesdgasdgasdg/article/details/78107653

    插件源码请看:https://github.com/mengzhinan/ScreenMatch

     

    为了使用方便,我把双击bat的方式改成了在Android Studio中的项目上右键弹出菜单的方式。选择菜单即可完成所有的工作,原理和bat方式一样。

    使用步骤如下:

    1、下载安装。

    点击Browse repositories...去搜索安装,安装好后即可看到ScreenMatch插件,右侧有描述信息和相关连接。

     

    2、调起菜单。

    安装好后,在项目的任意目录或文件上右击菜单(或按快捷键),即可看到ScreenMatch选项。

     

    3、选择在哪个module下执行适配。

    即基于哪个module下的res/values/dimens.xml文件作为基准dimens文件,生成的其他尺寸dimens文件放在哪个module下。

     

    选择一个,点击确定。

     

     

    如果无误,则会有成功提示,如上图。完成了,使用就这么简单。

     

    4、提供默认dimens文件样例。

    在项目的根目录提供了一个默认的dimens.xml文件样例,怕你不知道怎么写,或者懒。如果不需要,可以删除。在后面讲到的配置文件中可以配置是否生成。

     

    5、生成配置文件。

    生成了配置文件,如果删除了或者没有创建,则所有的适配都是用默认值,默认值请看源码。

     

    6、配置文件详解。



    #
    # 手机widthDP基准值,一般都是360dp,不建议更改,除非你对屏幕适配原理有深刻的见解。否则不给是或者给360,程序内的默认值为360

    base_dp=360

     


    # 你还有哪些widthDP值需要适配,多个值以英文逗号分隔。如果算出来的widthDP值有小数,取整。比喻411.948,则取411
    # 系统默认适配的widthDP值为: 384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
    match_dp=

     


    # 如果你觉得系统默认适配的某些值不想要,就在此设置,下次适配时会忽略这些值。多个值以英文逗号分隔。
    ignore_dp=

     


    # 项目根目录中哪些目录不是module或者你不想让他在Dalog中显示,就在此设置。多个值以英文逗号分隔。
    # 系统默认忽略了这些目录:    .gradle,gradle,.idea,build,.git
    ignore_module_name=

     


    # 请设置默认处理和存放dimes适配文件的module。
    # 如果你后面设置了不弹出Dialog,则适配时系统默认取这个module路径处理适配操作。
    match_module=app

     


    # 是否不弹出适配时的选择对话框,使用上面的match_module默认值。
    # 此处赋值为  true 或者 false,默认值为false,即弹出对话框。
    not_show_dialog=false

     


    # 是否不再生成项目根目录默认的dimens样例文件?怕你不会写,所以我给你生成了
    # 此处赋值为   true 或者 false,默认为false,即生成。
    not_create_default_dimens=false

     


    # 是否同时适配sp字体。因为我怕字体也跟着xxxdp/360dp这样的比例缩放不准确。
    # 此处赋值为  true 或者 false,默认值为true,即sp和dp一样,都等比缩放。此处待研究和验证。
    is_match_font_sp=true

     

    //===以下更新===============================================================

    # 关于生成的dimens.xml适配文件夹,你是想用values-wXXXdp 还是 values-swXXXdp 格式?
    # 通过对官网文档的查阅,sw意思是smallest width dp的含义,即始终使用最小宽度 dp 值。
    # 这样做的好处是,可以解决手机横竖屏切换时到处的意想不到的bug出现,即某些view的宽高尺寸会放大一倍。
    # 比喻:你手机的widthDP=360dp,heightDP=640dp。
    # 如果竖屏时手机寻找values-w360dp或values下默认的360dp的dimens.xml文件值;
    # 如果旋转手机为横屏模式,手机会寻找values-w640dp目录中的dimens.xml文件值;
    # 故,导致UI发生变化了。
    # sw即表示无论是横屏还是竖屏,手机系统都会使用最小width dp值;
    # 即上例中,横竖屏时都使用values-sw360dp或values下默认的360dp的dimens.xml文件值。
    # 下面配置项的值如果为false,则表示你只想生成values-wXXXdp格式,如果你的app不涉及到页面横屏。
    # 不给值或值为true,表示生成values-swXXXdp格式。
    # 默认值为true。
    create_values_sw_folder=true


    如果你发现你的项目里面的screenMatch.properties配置文件中没有上述某些值,
    则请删除你的配置文件,右键项目运行一遍插件,则会再次生成最新的配置。


    关于默认的dimens.xml文件内容的问题。这些基础dimen项,难道自己手写?
    我早已经给你们提供了模板文件,在你项目的根目录,
    与screenMatch.properties配置文件并列的screenMatch_example_dimens.xml文件。
    你可以把此screenMatch_example_dimens.xml模板文件更名为dimens.xml复制到....src/main/res/values下,
    或者更新已有的....src/main/res/values/dimens.xml文件内容。

     

     

     

     

     

    展开全文
  • 1.再也不用拿着设计稿去想这控件的宽高到底取多少dp 2.再也不用去为多个屏幕去写多个dimens 3.再也不用去计算百分比了(如果使用百分比控件完成适配) 4.再也不用去跟UI MM去解释什么是dp了
  • 主要介绍了Android 图片显示与屏幕适配的问题的相关资料,Android的分辨率问题是每个Android 开发者头疼的问题,那么这里给大家介绍个万能办法,需要的朋友可以参考下
  • Android屏幕适配demo

    2018-02-02 10:51:18
    Android大屏幕适配demo,这个是仿照郭林文章中的例子,他的例子是用eclipse写的,直接运行会不兼容最新的sdk,我改成了AndroidStudio可以直接运行的demo.郭林此代码文章的连接 ...
  • 最近研究了一下Android中的自动适配,加上Studio便捷的实时预览功能,总结一下如何在Android Studio中快速方便适配多种屏幕。先来补习一下基础知识,来看几个名词解释:分辨率:整个屏幕的像素数目,为了表示方便...
  • Android Studio 屏幕分辨率适配

    千次阅读 2015-12-21 10:29:04
    android studio进行android 应用屏幕分辨率适配使用建立不同dimens.xml方法,刚开始建立的文件夹都叫 values-1280x720 values-800x400之类的,发现有时候放到不同分辨率的手机上会显示错误,就是高分辨率手机会显示...
  • import android.support.v7.app.AppCompatActivity; import java.lang.ref.WeakReference; public class ${activityClass} extends AppCompatActivity { @Override protected void onCreate(Bundle ...
  • Android 官方屏幕适配之ScreenMatch

    千次阅读 2022-02-28 15:25:00
    Android 官方屏幕适配ScreenMatch
  • 一、关于布局适配建议1、不要使用绝对布局2、尽量使用match_parent 而不是fill_parent 。3、能够使用权重的地方尽量使用权重(android:layout_weight)4、如果是纯色...比如要适配1080*1800的屏幕(魅族MX3采用此分...
  • Android开发 屏幕适配

    2015-11-19 18:13:22
    Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,你会发现其实Android屏幕适配也可以很简单。 基本概念 Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好...
  • 采用Android Studio开发Android APP,在项目的res目录下,会出现以mipmap开头的文件夹。mipmap只有这几个密度文件,不需要新建! 根据Android官方的描述,mipmap仅仅用于存放APP启动图标,可由Image Asset Studio...
  • 补充知识:Android屏幕适配之动态设置单个控件的宽高比例 前言:这个问题出现在我做平板项目的时候,需要横排显示一张图片以及其他控件,如下图: 要求图、文各占一半大小,图片的宽高比例目测是1:2。这种情况不适
  • //屏幕适配 implementation 'me.jessyan:autosize:1.1.2' 2.然后在清单文件中加入 <meta-data android:name="design_width_in_dp" android:value="410" /> <meta-data android:name="design_height_in_...
  • android 屏幕适配解决方案

    千次阅读 2022-03-16 10:51:14
    // 今日头条屏幕适配方案 implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1' 1、在build.gradle中引用 implementation 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1' plugins { id '...
  • 1 Android屏幕适配的度量单位和相关概念 建议在阅读本文章之前,可以先阅读快乐李同学写的文章《Android屏幕适配的度量单位和相关概念》,这篇文章包含了阅读本文的一些基础知识,推荐阅读。 2 Android屏幕适配的...
  • 主要介绍了Android 刘海屏适配总结(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • screenAdaptation android屏幕适配 屏幕适配的方法总结中获取屏幕宽度,长度,从而进行计算
  • Android 今日头条屏幕适配详细使用攻略

    千次阅读 多人点赞 2020-09-22 09:33:40
    首先感谢大神JessYan的创神之作《AndroidAutoSize》,大神以今日头条屏幕适配的核心代码为基础进行了扩展封装,产生了《AndroidAutoSize》这个能快速接入使用的屏幕适配方案,这个屏幕适配方案是我遇到的截止2020.9....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,606
精华内容 2,642
关键字:

androidstudio屏幕适配