发布网友
发布时间:2022-04-22 23:48
共4个回答
懂视网
时间:2022-05-12 20:54
rem方案:页面中的任何元素都采用rem布局,包括字体。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <style type="text/css"> * { margin: 0; padding: 0; } body { width: 7.5rem; font-size: 32px; font-size: .32rem; max-width: 1080px; margin: 0 auto; background: #f6f6f6; font-family: 'STHeiti', 'Microsoft YaHei', Helvetica, Arial, sans-serif; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } </style> </head> <body> <script type="text/javascript"> var Dpr = 1, uAgent = window.navigator.userAgent; var isIOS = uAgent.match(/iphone/i); var isYIXIN = uAgent.match(/yixin/i); var is2345 = uAgent.match(/Mb2345/i); var ishaosou = uAgent.match(/mso_app/i); var isSogou = uAgent.match(/sogoumobilebrowser/ig); var isLiebao = uAgent.match(/liebaofast/i); var isGnbr = uAgent.match(/GNBR/i); function resizeRoot() { var wWidth = (screen.width > 0) ? (window.innerWidth >= screen.width || window.innerWidth == 0) ? screen.width : window.innerWidth : window.innerWidth, wDpr, wFsize; var wHeight = (screen.height > 0) ? (window.innerHeight >= screen.height || window.innerHeight == 0) ? screen.height : window.innerHeight : window.innerHeight; if(window.devicePixelRatio) { wDpr = window.devicePixelRatio; } else { wDpr = isIOS ? wWidth > 818 ? 3 : wWidth > 480 ? 2 : 1 : 1; } if(isIOS) { wWidth = screen.width; wHeight = screen.height; } if(wWidth > wHeight) { wWidth = wHeight; } wFsize = wWidth > 1080 ? 144 : wWidth / 7.5; wFsize = wFsize > 32 ? wFsize : 32; window.screenWidth_ = wWidth; if(isYIXIN || is2345 || ishaosou || isSogou || isLiebao || isGnbr) { //YIXIN 和 2345 这里有个刚调用系统浏览器时候的bug,需要一点延迟来获取 setTimeout(function() { wWidth = (screen.width > 0) ? (window.innerWidth >= screen.width || window.innerWidth == 0) ? screen.width : window.innerWidth : window.innerWidth; wHeight = (screen.height > 0) ? (window.innerHeight >= screen.height || window.innerHeight == 0) ? screen.height : window.innerHeight : window.innerHeight; wFsize = wWidth > 1080 ? 144 : wWidth / 7.5; wFsize = wFsize > 32 ? wFsize : 32; document.getElementsByTagName('html')[0].style.fontSize = wFsize + 'px'; document.getElementById("fixed").style.display = "none"; }, 500); } else { document.getElementsByTagName('html')[0].style.fontSize = wFsize + 'px'; document.getElementById("fixed").style.display = "none"; } } resizeRoot(); </script> </body> </html>
html的font-size大小是根据移动设备自动计算的。
设计师完成的设计稿宽度为:750px,此时html跟节点的大小是50px,其他元素根据这个基准值设置rem大小。
页面上html的font-size不是预先通过媒介查询在css里定义好的,而是通过js计算出来的,如上述代码中的js代码部分就是计算html的font-size的大小。
热心网友
时间:2022-05-12 18:02
从整个布局来讲,最外层可以使用DrawerLayout。然后嵌套一个Toolbar(顶部导航栏),一个RelativeLayout嵌套RecyclerView(抽屉侧滑栏)。还有一个ViewPager。自己亲手做了一遍,遇到了三个问题:1.顶部导航栏怎么添加三个tab,并与ViewPager联动。2.抽屉很明显不是简单的NavigationView(从下面底下的设置、退出应用两个按钮可以看出)。3.抽屉怎么顶到状态栏,并不让状态栏半透明显示。顶部导航栏依旧使用Toolbar,但是里面包裹一个TabLayout,使用TabLayout.addTab三个Tab,但是三个Tab只设置图标,不设置标题。抽屉使用的是一个RelativeLayout嵌套一个RecyclerView和一个LinearLayout(底部设置、退出应用)。先说结果,activity实现从实现上考虑,我也觉得使用Fragment会更好一些,只要在Container Activity注册广播监听播放状态就行了。而都用Activity的话,需要封装BaseActivity在OnResume注册监听、在onPause取消监听,然后界面也每个Activity都会有一个状态栏,实现起来感觉还是会比上一个方案麻烦。那有没有可能是WindowManager呢,比如360的悬浮窗就是用它实现的,来看下。页面结构是这样的,主页面为例,还是使用Android Device Monitor。在里面有显示节点信息,那就不是WindowManager了。也就是说基本可以断定是Activity了。写一个BaseActivity,封装统一处理播放栏各种状态的方法,需要显示播放栏的子Activity都继承这个BaseActivity就可以了。至于系统性能,这个还好。那为什么用Activity呢?通过Jadx反编译,看下activity声明。或许只是网易的开发同学比较偏好这种方式吧。
热心网友
时间:2022-05-12 19:20
很多设计大神在做分享和知识分享会的时候,都会拿网易的设计作品来作为教学案例。确实如此。网易的设计在国内都是口碑的。无论是PC端的web设计规范、还是移动端的APP视觉设计规范都是我们学习的案例。因为此处的侧边抽屉式面板是自定义的模块,而并非系统自带的控件。从截图可以看出是ios的系统,ios系统并没有面包屑抽屉这种控件。既然是自己写的面板,那自然是想加入什么元素都行,不受系统*。可以看看别的案例,例如wps和qq也有自定义的侧面板,它们都是自定义的,面板内容可以因需而定,非常自由。
热心网友
时间:2022-05-12 20:55
下面那个播放栏半透明,所以应该是叠在主界面上,主界面用 viewgroup应该比较方便,然后下面的播放栏在切换界面时根据不同的情况选择visible,gone就行了。最近发现可以直接用一个悬浮窗悬浮在所有窗口的上面,然后动态控制显示隐藏,这样就不用所有页面都去添加一个view。因为现在很多手机默认都是会禁用悬浮窗的,所以我修改了下type。WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_TOAST);这句话是关键,将悬浮窗的类型设置为Toast,这样就不需要权限就能显示。在小米手机上亲测可用。activity+fragment是一种实现的方法,模仿过,不过界面太丑。