首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实用Android 屏幕适配方案分享

电脑显示器分辨率、包括手机分辨率,敢说分辨率种类远超过Android设备分辨率,那么一个很奇怪现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦?...同样,拿到UI给设计图以后,是不是抱怨过尼玛你标识都是px,项目里面用dp,这什么玩意,UI人员解释,UI妹妹也不理解。...那么本例同样可以解决Android工程师UI妹妹间矛盾~UI给出一个固定尺寸设计稿,然后你在编写布局时候不用思考,无脑照抄上面标识像素值,就能达到完美适配,理想丰满~~ 然而,Android对于不同屏幕给出适配方案是...可以看出 1dp = 1/160inch;那么至少能解决一个问题,就是你在布局文件写某个View宽和高为160dp*160dp,这个View在任何分辨率屏幕中,显示尺寸大小是大约是一致(可能不精确...:某个浮动按钮高度宽度希望是屏幕高度1/12,某个Button宽度希望是屏幕宽度1/3。

1.4K70

实用Android 屏幕适配方案分享

电脑显示器分辨率、包括手机分辨率,敢说分辨率种类远超过Android设备分辨率,那么一个很奇怪现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦?...同样,拿到UI给设计图以后,是不是抱怨过尼玛你标识都是px,项目里面用dp,这什么玩意,UI人员解释,UI妹妹也不理解。...那么本例同样可以解决Android工程师UI妹妹间矛盾~UI给出一个固定尺寸设计稿,然后你在编写布局时候不用思考,无脑照抄上面标识像素值,就能达到完美适配,理想丰满~~ 然而,Android...可以看出 1dp = 1/160inch;那么至少能解决一个问题,就是你在布局文件写某个View宽和高为160dp*160dp,这个View在任何分辨率屏幕中,显示尺寸大小是大约是一致(可能不精确...再比如:某个浮动按钮高度宽度希望是屏幕高度1/12,某个Button宽度希望是屏幕宽度1/3。

1.2K100
您找到你想要的搜索结果了吗?
是的
没有找到

AndroidStudio入门基础(一)——基础布局

大家好,又见面了,是你们朋友全栈君。 写在前面: 上学期学习了Android,从一开始什么都不懂到后来成功做出一个课程设计作品,回忆起来一路还是充满坎坷辛酸泪啊。...xml文件作用就和.html.css文件作用类似,页面需要什么组件?怎么布局?用一些什么样式?都在.xml里面设置。...layout_width layout_height 这两个属性就决定了布局宽度高度,把RelativeLayout想象成一个相框或者一个容器,在这个相框里面可以装其他组件。...区别于RelativeLayout,LinearLayout就不要求每个组件都要设置自己id了,但是最好还是设置一下,这是一个好习惯哦。 那么问题来了,怎么设置两个组件是横着并排还是竖着并排呢??...为了巩固你对认识,一个小小题目,这是课程设计一个页面,你会怎么设计这个布局呢?? 自己也再试了试: <?xml version="1.0" encoding="utf-8"?

1.1K10

Android小知识10则(下)

然后继承自TextView, 属性设置什么就很简单了: <Chronometer android:id="@+id/timer" android:layout_width="wrap_content...你可能会提问, 为什么没有格式化字符串它也正常显示了. 看xml中android:format="%s", 这就是代表用默认格式....大家如果之前有关注, 会知道这是之前一个单独篇章, 当然不是为了凑数放在这里, 一个知识点有关....同样可以用innerRadius直接设置. ---- 用shape绘制SeekBar 知道很多非常好看自定义进度条, 但是写这个SeekBar是想补充下shape使用, 用非常少量代码实现自定义进度条...再来看看滑块进度条外观具体代码, 进度条可以设置背景, 进度, 第二进度. 滑块的话, 你想画成什么样都行. <?xml version="1.0" encoding="utf-8"?

77340

Android绘制(一):来用shape绘出想要图形吧!

前言 在没有UI设计师时候, 或者是想简单看下效果时候, 用shape进行快速绘制是极好!...描边stroke的话不写dashGap, dashWidth就会是实线, dashWidth代表虚线宽度, dashGap代表虚线间隔. 内间距padding尺寸size就不提了, 大家都懂....同样可以用innerRadius直接设置. ---- 用shape绘制SeekBar 知道很多非常好看自定义进度条, 但是写这个SeekBar是想补充下shape使用, 用非常少量代码实现自定义进度条..., 喜欢稍微宽一点. thumb设置滑块, 可以是图片, 可以是shape写设置. progressDrawable代表进度条外观, 可以是图片, 可以是shape写设置....再来看看滑块进度条外观具体代码, 进度条可以设置背景, 进度, 第二进度. 滑块的话, 你想画成什么样都行. <?xml version="1.0" encoding="utf-8"?

81240

View 嵌套太深会卡?来用 Jetpack Compose,随便套——Intrinsic Measurement

解决方式也非常巧妙而简单——它不许重复测量。 ……嗯? ? View 层数界面加载性能关系 大家好,是扔物线朱凯。...比如一个纵向 LinearLayout,当宽度设置成了 wrap_content 时候: <LinearLayout xmlns:android="http://schemas.android.com...但……如果内部一个子 View 宽度是 match_parent: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/...刚才那个「固有特性测量」翻译,什么觉得没有灵魂呢,主要是那个「固有特性」指其实就是「固有尺寸」,也就是这个组件自身宽度高度。...不过从原理上看,就算发布时候不行,未来应该是可能。 总结 如果你做 Android 开发,Compose 真的是时候了解一下了。

61620

Android全面的屏幕适配方案解析(一)

而当Android系统、屏幕尺寸、屏幕密度出现碎片化时候,就很容易出现同一元素在不同手机上显示不同问题,为了保证某一元素在Android不同尺寸、不同分辨率手机上具备相同显示效果,这个时候就需要对屏幕进行适配啦...即该手机每英寸403个像素。 px px即像素,是屏幕上显示数据最基本点,上面介绍屏幕分辨率单位就是px,包括UI设计图、Android原生API都会以px作为统一计量单位。...dp、dip dp应该比较熟悉,我们设置固定数值时候都是以dp为单位,而dpdip是一个意思,都是Density Independent Pixels缩写,即密度无关像素,与终端上实际物理像素点无关...举个例子:比如我们想设置一张图片宽度为屏幕一半,那么: 如果以像素px为单位,那么我们需要在320x480分辨率手机上设置宽度为160px,而在480x800分辨率手机上设置宽度为240px,两者设置宽度就不一样了...而如果以dp为单位,在这两种分辨率下,设置宽度160dp都显示为屏幕一半。

1.2K30

android UI 仿 win 8 模块化 标题,并实现 可长按拖动交换图片位置、可点击,且伴随动画特效

://cloud.tencent.com/developer/user/1148436/activities 先上效果图,给大家个直观效果,后上实现代码:  ->   -> ->  ok,现在简单说下上面的图片被做了什么操作...,长按“休闲场所”,然后代码实现 震动,告诉用户,现在可以移动了,然后“海滨沿岸” 互换位置,注意此时 图片是 半透明,这些都是自定义特效,可以任意改。...fragment,本身 viewPager onTouchEvent 事件,即可以左右侧滑,所以,当我在 这个页面里,长按图片试图拖动时候,就会造成 viewPager 子页面 长按滑动...不过已经把这个问题解决了,方法请见我另外一篇博文链接http://www.cnblogs.com/linguanh/p/4540099.html        代码里面一些必要注释,已详细给出,...= toPoint ){ 522 523 //将被拖拽View原始位置数据, 设置为, 被覆盖View数据 524 //Toast.makeText

1.2K70

为 DP 设计布局

什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 什么是dp、dip、dpi、sp、px?他们之间关系是什么什么是mdpi、hdpi、xdpi、xxdpi?如何计算区分?...题图中一个矩形都代表着一种Android设备。Android系统碎片化问题严重性,让我们不得不面对屏幕适配问题。...dipdp是一个意思,都是Density Independent Pixels缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕像素密度就是160dpi...假如同样都是画一条320px线,在480*800分辨率手机上显示为2/3屏幕宽度,在320*480手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半长度。...这也是为什么Android开发中,写布局时候要尽量使用dp而不是px原因。

53250

Android通过overScrollBy实现下拉视差特效

ListView,所以需要自定义一个ListView. 2.处理头部布局文件,将其以HeaderView方式添加到自定义ListView中 3.需要获取HeaderViewImageView初始高度...ImageView中图片高度.因为这2个高度将决定下来时候图片拉出范围,以及松手后图片回弹动画效果.对应控件宽高获取,兴趣可以看这篇文章浅谈自定义View宽高获取 4.在overScrollBy...:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="160dp"..." / </LinearLayout 没什么特别的,就是一个ImageView,通过src设置了一张图片,这里唯一要将就是scaleType属性,这边设置了centerCrop,以图片最小边开始截取...,因为这里选择图片是高度大于宽度,所以裁剪时候会保留完整宽度,中心裁剪,如下图所示: ?

1.1K51

Android圆角头像工具类详解

mBitmapShader // 使canvas在执行时候可以切割原图片(mBitmapShader是关联了原图bitmap) private final Paint mBitmapPaint =...new Paint(); // 这个描边,则与本身原图bitmap没有任何关联, private final Paint mBorderPaint = new Paint(); // 这里定义了 圆形边缘默认宽度颜色..., * 以及调用updateShaderMatrix()函数 invalidate()函数; */ private void setup() { // 因为mReady默认值为false,所以第一次进这个函数时候...,取是CircleImageView布局实际大小,为方形,查看xml也就是160dp(240px) // getWidth得到是某个view实际尺寸 mBorderRect.set(0, 0, getWidth...(), getHeight()); // 计算 // 圆形带边界部分(外圆)最小半径,取mBorderRect宽高减去一个边缘大小一半较小值(这个地方比较纳闷为什么求外圆半径需要先减去一个边缘大小

1K31

TextInputLayout-Android M新控件

就如你知道,这个属性允许你在EditText内容为空时候显示一个自定义提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息上下文提示。...一个单一EditText 在输入文字时候会隐藏hint,而被包含在TextInputLayoutEditText则会让hint变成一个在EditText上方浮动标签。...,我们需要定义什么是错误,什么不是。...TextInputLayout只是一个容器,但是LinearLayoutScrollView不同,你可以使用一个特殊方法获得子元素,getEditText,不需要使用findViewById。...这直接影响到布局大小,增加底部padding为错误标签让出空间。在setError设置错误消息之前开启这个功能意味着在显示错误时候布局不会变化。你可以把这两个方法结合起来验证下所说

73620

Android使用TextInputLayout创建登陆页面

你可以从下方途中知晓什么。 ? 在Google I/O 2015期间,安卓团队发布了一个崭新兼容库,Design Support Library。简直就是为解决这个问题而生。...TextInputLayout控件LinearLayout完全一样,只是一个容器。跟ScrollView一样,TextInputLayout只接受一个子元素。...就如你知道,这个属性允许你在EditText内容为空时候显示一个自定义提示。一旦用户开始输入,hint会消失。这并不理想,因为用户丢失了他们输入信息上下文提示。...,我们需要定义什么是错误,什么不是。...这直接影响到布局大小,增加底部padding为错误标签让出空间。在setError设置错误消息之前开启这个功能意味着在显示错误时候布局不会变化。你可以把这两个方法结合起来验证下所说

1.6K10

强大提示控件TextInputLayout使用以及源码分析

本篇博客带来一个具有强大提示Material Design风格控件TextInputLayout,使用这个控件可以非常方便做出用户登录界面帐号密码输入框效果,文章将会从以下TextInputLayout...,以下几个属性方法需要声明一下: app:hintAnimationEnabled="true"可以开启动画,这个为true时,获得焦点时候hint提示问题会动画地移动上去。...之中肯定应该会有一个添加错误提示信息方法,在这里我们找到了,同时这里代码也是值得我们进行学习,只有当用户设置错误提示为真的时候,才会new一个TextView,这样是比较省性能,接下来是setError...方法,设置错误提示文本信息,里面是一些判断动画设置 public void setError(@Nullable CharSequence error) { if (!...,就是设置left,top, right, bottom,然后调用onBoundsChanged方法进行更新,接下来setCollapsedTextAppearance方法,设置折叠时候文字样式 void

1.7K50

Android从屏幕底部弹出popupWindow

Android从屏幕底部弹出popupWindow 先看一下效果,看看是不是你想要效果,免得浪费大家时间,一点说明,由于我录制 gif 是用模拟器,所以没有屏幕变暗效果和加速弹起效果,实际效果以真机测试为准...> 2.代码部分 此处用一个加速平移动画,从屏幕底部弹出,然后将屏幕亮度变暗,让popupwindow获取焦点,就可以实现了popupwindow从手机屏幕底部弹出效果...getWindow().getAttributes(); lp.alpha = 1f; getWindow().setAttributes(lp); } 3.是手机拍照相册选择功能...(Bitmap source) { // 获取图片宽度 int width = source.getWidth(); // 创建一个与source等宽...// setXfermode:设置当绘制图像出现相交情况时候处理方式,包含常用模式哪几种 // PorterDuff.Mode.SRC_IN 取两层图像交集部门

3.4K30

Android MVVM框架搭建(五)Navigation + Fragment + BottomNavigationView

本文效果图如下: 正文   MVVM框架搭建按理来说就已经完成了,但是我们既然要弄一个实用框架,就不能只停留于框架搭建阶段,还要有实用场景,喜欢框架可以满足绝大部分开发中使用。...现在我们框架虽然了Activity,但是还没有使用过Fragment,通常Fragment是在什么时候使用呢?...现在我们数据库了,接下来要做就是数据或者保存了。...WallPaperRepository中代码神似,逻辑上基本一致,只不过是不同接口不同数据表,同事在当前这个Repository中增加了一个异常信息LiveData,因为请求接口你可能会需要很多情况...因此我们必要做一个异常信息处理,然后传递到ViewModel中,最终在Activity中对这个异常进行观察,及时通知到页面上。不然光打印日志,用户是看不到

62530

Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

我们来分析一下效果图中都用到了什么,只看带颜色文字,一个苹果背景图、还有一个悬浮按钮(吸附在CollapsingToolbarLayout右下角)。...3:输入框TextInputEditText使用 在最平常时候,我们写输入框,要加正则表达式来判断是哪一行出现不符合要求数据,然后用一个toast来提示用户,这就显得用户体验极差,有的用户还没看完...一般情况下,EditText获得光标的时候hint会自动隐藏,这样不是很友好。...这时候TextInputLayout则是显示错误,TextInputLayout是LinearLayout子类,用于辅助显示提示信息。...现在仅仅是过度效果,还没有加提示信息,用法很简单,但注意一点TextInputLayout只能包含一个TextInputEditText,如果写用户名密码那就写两个TextInputLayout,哦,

1.5K100
领券