精华内容
下载资源
问答
  • 先说下场景,公司做的是一个横屏的系统,之前使用的6735的代码,这个是屏手机的代码,但是被驱动工程师改成了横屏,因此开机当然是横屏的。但是右侧的虚拟按键死活显示不出来,只是显示了一条大黑边:为了使大家看...

    先说下场景,公司做的是一个横屏的系统,之前使用的6735的代码,这个是竖屏手机的代码,但是被驱动工程师改成了横屏,因此开机当然是横屏的。但是右侧的虚拟按键死活显示不出来,只是显示了一条大黑边:

    为了使大家看得更明白点,我直接上图:
    SystemUI大黑边

    大黑条所在的位置应该显示的是虚拟按键,但是这里什么都没有;通过修改系统配置文件隐藏大黑条后则为全屏显示,黑条消失,但是还是看不到虚拟按键;我试过以下几种办法,都告失败:

    1. 修改NavigationBar的高度(这里是宽度);
    2. 修改NavigationBar中的按钮颜色;
    3. 修改NavigationBar的布局背景颜色为白色(无效,仍然是黑色);
    4. 替换布局文件为Asop提供的布局(不报错,无效);
    5. 使用ADB指令隐藏导航条(可以隐藏,向左滑动拉出导航条,还是大黑条);
    6. 修改代码强制显示导航条(无效,还是大黑边);

    然后我开始怀疑是不是这个板子的源码定制有问题,或者说导航条的显示模块没启动,为了更加全面的了解,我从Android系统按下电源键开始了解整个Android系统从开机到SystemUI加载导航条的整个过程分析,有兴趣的朋友可以参考我前面写的几篇文章:《Android系统启动流程分析(一)》

    接来下就是一个个排除:

    1. SystemUIService是否启动?答案是:是
    2. SystemUIApplication是否启动?答案是:是
    3. NavigationBarView是否构造了布局文件?答案是:是
    4. NavigationBarView是否被设置NavigationBarView?答案是:否
    5. 按钮是不是被设置NavigationBarView?答案是:否
    6. 是不是右边的导航栏宽度太大导致图标没显示出来?答案是:否

    然后我凌乱了。。。。。。

    然后开始浏览NavigationBar的源码,发现reorient方法,里面有关于方向的描述,我想了想,是不是因为源码是竖屏的但是手机默认变成了横屏才导致布局没有显示出来呢?

    我们看下reorient方法:

     public void reorient() {
            final int rot = mDisplay.getRotation();
            for (int i=0; i<4; i++) {
                mRotatedViews[i].setVisibility(View.GONE);
            }
            mCurrentView = mRotatedViews[rot];
            mCurrentView.setVisibility(View.VISIBLE);
    
            getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
    
            mDeadZone = (DeadZone) mCurrentView.findViewById(R.id.deadzone);
    
            // force the low profile & disabled states into compliance
            mBarTransitions.init(mVertical);
            setDisabledFlags(mDisabledFlags, true /* force */);
            Log.d("larsonzhong", "reorient() rot="+rot);
            setMenuVisibility(mShowMenu, true /* force */);
    
            if (DEBUG) {
                Log.d(TAG, "reorient(): rot=" + mDisplay.getRotation());
            }
    
            // swap to x coordinate if orientation is not in vertical
            if (mDelegateHelper != null) {
                mDelegateHelper.setSwapXY(mVertical);
            }
            updateTaskSwitchHelper();
    
            setNavigationIconHints(mNavigationIconHints, true);
        }
    

    首先我在reorient方法里面加了一个日志打印,看看是不是从开机到后面一直没有执行旋转操作;

    01-01 00:02:22.743 952-952/com.android.systemui D/larsonzhong: reorient() rot=0
    01-01 00:02:24.213 952-952/com.android.systemui D/larsonzhong: reorient() rot=0

    然后恍然大悟,果真是一直都没有执行旋转操作,也就是说一直用的竖屏的layout,但是驱动又被改成了横屏,所以死活不显示出来。

    问题点找到了,然后我把默认的方向对调:

     @Override
        public void onFinishInflate() {
    	    /*larsonzhong modify rot0 to rot90*/
            mRotatedViews[Surface.ROTATION_0] =
            mRotatedViews[Surface.ROTATION_180] = findViewById(R.id.rot90);
    		
    		/*larsonzhong modify rot90 to rot0*/
            mRotatedViews[Surface.ROTATION_90] = findViewById(R.id.rot0);
    
            mRotatedViews[Surface.ROTATION_270] = mRotatedViews[Surface.ROTATION_90];
    
            mCurrentView = mRotatedViews[Surface.ROTATION_0];
    
            getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener);
    
            updateRTLOrder();
        }
    

    然后重新编译,刷入机器,重启,好鸡冻,久违的导航栏又出现了!!!

    喜欢的朋友麻烦点个赞,谢谢;

    展开全文
  • 网页多栏布局&拖动改变每一的宽度 网页多栏布局一个非常常见的布局方式...我们的网页多栏布局,不论横向的多栏还是竖向多栏。【我以横向三排列为例】 每一拖动边框时可以动态的改变宽度。 以网页中...

    网页多栏布局&拖动改变每一栏的宽度

    网页多栏布局是一个非常常见的布局方式,实现网页多栏布局的方式有很多种,但是要把分成多栏的网页变成点击某一栏可以拖拽改变宽度的那又是另一个麻烦事。

    接下来我就给大家说一下我的一个简单的实现方式

    • 首先要明确我们需要达到的效果:
      1. 我们的网页多栏布局,不论是横向的多栏还是竖向多栏。【我以横向三栏排列为例】
      2. 每一栏拖动边框时可以动态的改变宽度。

        以网页中有横排三栏为例,拖动第一栏边框,压缩第二栏宽度,增加第一栏宽度,不影响第三栏宽度。

    先说一下HTML结构

        <div class="content">
            <div class="left"></div>
            <div class="center"></div>
            <div class="right"></div>
        </div>
    

    这个HTML结构想必不用多说,大家都懂。

    多栏布局

    1. 我们可以采用传统的CSS布局方式,就是利用浮动float,让三个盒子横向排列,然后在调整间距,以此达到三栏布局的目的。

    2. 采用CSS3中给的分栏属性:

      column-width 栏目宽度 
      column-count 栏目列数 
      column-gap 栏目距离 
      column-rule 栏目间隔线
      
    3. 利用flex布局,直接给最外层的盒子加上一行:

      display:flex;
      

    实现三栏的方法有多种,网上有很多教程,不会的可以去百度一下。

    拖拽改变宽度

    我们要实现前面我说的效果里的第二条,也有几条路,比如:

    1. 手写JavaScript代码。
    2. 利用插件

    这两条路,想必大多数人都会选择第二条。自己动手去写JavaScript代码,委实太过麻烦,而且还不一定能达到要求,所以我在这里就给大家说一下插件。

    • 如果你的网页是有两栏布局需要拖动改变宽度,那么建议大家去看一下一个UI:

      IView UI:附上这个UI的地址

      IView UI 热心为我们提供了 Split面板分割功能,我们可以直接使用。

    • 如果你的网页有三栏,还需要达到我前面说的效果,那么再给大家一个插件地址:

      Split.js:附上Split.js插件地址

      Split.js是基于jquery的一个插件,功能非常强大,具体的大家一看便知。

    Split.js和Vue相结合

    • Split.js官网上给我们提供了,Split.js和React相结合的用法,下面我就来说一下和Vue结合怎么用。

    如果你的代码结合了webpack等自动化打包工具【没用的我就不说了,直接按照官网走即可】,Split.js官网也给我们提供了npm的下载安装方式,我来说下怎么用,怎么写:

    大前提:你的HTML代码结构必须和Split.js需要的代码结构相同,具体里面设置了什么样式不管。

    最好在代码的class属性里规定好排版的方向 ,例如:

    <div id="id1" class="left split split-horizontal"></div>

    • 首先下载Split.js插件

      npm i split.js -S
      
    • 第二步安装插件:

      // 我使用的是CommonJS的安装方式
      // 直接在需要用到的组件里引用:
      var Split = require('split.js')
      
    • 第三步初始化插件

      Split(['#id1', '#id2', '#id3'], {
          // 初始化 三栏布局,每一栏的占比【百分比】
         sizes:[20,30,50],
          // 每一栏可以缩小到的最小宽度
          minSize: [50, 50, 400]
      });
      

      这段代码,如果你改改id名直接放到你的js代码里肯定是行不通的,我们需要两步走:

      1. 在method方法里新建一个函数:init()【函数名字无所谓】
      2. 把那段初始化的代码扔到这个函数里,然后在created或者mounted里调用即可。
    • 插件初始化,还不算完,Split.js还有必须要有的CSS样式:

      /* split.js插件所需样式 */
        .split {
          -webkit-box-sizing: border-box;
          -moz-box-sizing: border-box;
          box-sizing: border-box;
      
          overflow-y: auto;
          overflow-x: hidden;
        }
      
        .gutter {
          background-color: #eee;
      
          background-repeat: no-repeat;
          background-position: 50%;
      
          cursor: move;
          cursor: grab;
          cursor: -moz-grab;
          cursor: -webkit-grab;
        }
      
        .gutter:active {
          cursor: grabbing;
          cursor: -moz-grabbing;
          cursor: -webkit-;
        }
      
        .split.split-horizontal,
        .gutter.gutter-horizontal {
          height: 100%;
          float: left;
        }
      

      如果直接从官网上复制split所需的CSS样式代码有一个大坑:官网上的代码里,在CSS样式里引入了两张图片这个地方极易出错,因为我们并没有那两张图,而且那两行样式删了也无所谓。【我博客上的样式就是我改过之后,用着没问题。】


    到此,split插件的用着基本就没啥问题了,不过不要忘了引入jquery

    发一下福利:

    • 我们有些时候还会碰到一种情况,就是排版布局时,需要让整个页面占一屏。
    • 一旦超过了一屏,那就让超过的那一栏出现滚动条。

    这个实现起来也很简单:

    1. 给盒子设置高度100%,确保盒子占满需要占的部分。
    2. 然后设置:overflow-y:scroll;即可。横向的不要可以隐藏:overflow-x:hidden

    还有一个和Vue集合的插件:vue-split-pane,也是实现分栏操作的:

    插件地址:vue-split-pane,需要的小伙伴可以去了解一下。

    展开全文
  • 由于项目中的需求是竖屏状态下,要求显示状态屏状态下为了整体UI与没关要求隐藏状态。代码如下: -(BOOL)prefersStatusBarHidden{ UIApplication* application = [UIApplication sharedApplication]

    最近正在忙于做项目,很长时间没更新blog了,其实主要还是自己做记录吧。

    • 好了,废话不多说,开始说正题。
    • 由于项目中的需求是竖屏状态下,要求显示状态栏,横屏状态下为了整体UI与没关要求隐藏状态栏。代码如下:
    UIApplication* application = [UIApplication sharedApplication];
        if (UIInterfaceOrientationIsLandscape(application.statusBarOrientation)) {
            /// 状态栏隐藏
            application.statusBarHidden = YES;
            //  横屏
        }else{
            /// 状态栏显示
            application.statusBarHidden = NO;
            //  竖屏
        }

    以下逻辑有问题(弃用)

    -(BOOL)prefersStatusBarHidden{
        UIApplication* application = [UIApplication sharedApplication];
            //判断屏幕方向
        if (UIInterfaceOrientationIsLandscape(application.statusBarOrientation)) {
            //  横屏
            return YES;
        }else{
            //  竖屏
            return NO;
        }
    }

    前提是需要把

    View controller-based status bar appearance

    的值改成YES,改成NO的时候亲测

    无效

    无效

    无效

    无效

    展开全文
  • 不管设备处于还是竖屏,状态始终固定在整个屏幕的上边缘,承载用户所需要的如网络连接,时间,电量等信息。尽管你不会像使用其它UI元素一样编辑状态,理解它在应用中的功能仍然很重要。隐藏状态时请慎重。...
  • 全屏/非全屏切换

    2016-07-26 23:59:18
    3、切换到全屏时,是横屏显示还是竖屏显示 4、支持360°自动旋转横屏 5、切换到横屏时视频画面显示正常 6、竖屏时弹出提示框切换到全屏时,提示框隐藏/一样横屏显示 7、全屏时弹出提示框切换到非全屏时,提示框...

    1、系统未打开自动横屏时APP不能横屏显示

    2、APP没有横屏功能时不能全屏显示

    3、切换到全屏时,是横屏显示还是竖屏显示

    4、支持360°自动旋转横屏

    5、切换到横屏时视频画面显示正常

    6、竖屏时弹出提示框切换到全屏时,提示框隐藏/一样横屏显示

    7、全屏时弹出提示框切换到非全屏时,提示框隐藏/一样竖屏显示

    8、手动/自动切换到全屏

    9、弹出手机菜单栏时是否退出全屏

    展开全文
  • 布局小知识

    2014-12-31 23:18:01
    刚刚从事android开发,很多东西还是记下来比较好,都一些很普遍东西。 一:在清单文件中设置屏和屏: 屏:android:screenOrientation="portrait" 屏:android:screenOrientation=“landscape” 二:...
  • 1 背景自适应且不失真问题的存在背景...标题的背景 无论还是竖屏 高分辨率还是低分辨率 都能自动填充满 而且不失真等等背景问题 根据以往的经验 我们一般采用先切图后拼凑的做法 这种做法本来我想在这里和大...
  • 标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。  根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大家介绍一下,其实有的时候还是...
  • 一道蛮水的分治题,但思想很不错(虽然我还是非常天真的以为积木大赛原题,并且居然还有30分) 看到这个题目,根据贪心的一贯风格,我们肯定能想到将整个栅栏的下面某部分直接用几次横向的操作把它涂掉。然后我们...
  • 这篇文章android开发人员的必备知识,我特别为大家整理和总结的,不求完美,但是有用。...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题...
  • ↑典型的三列式版面。...最近有一句话:“着走,还是竖着走?”我的答案,不能着走,那就竖着走吧。千万别横竖不是,方方正正的。 转载于:https://www.cnblogs.com/asksea/archive/2004/09/23/45743.html...
  • draw9patch知识将讲解

    2019-09-23 11:47:30
    标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大家介绍一下,其实有的时候还...
  • 不适合需要支持横竖屏的app,屏顶部不需要增加距离,反而左右各有44pt,底部的距离也和屏不同 不够动态。还是举个例子,假如有电话打进来了,导航应该会下移,这时候view可能还是会被挡住 这里我想探讨...
  • 这篇文章android开发人员的必备知识,内容摘选自网络,不求完美,但是有用。 1.背景自适应且不失真问题的存在 ...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等
  • draw9patch(转)

    2014-06-26 09:22:00
    1.背景自适应且不失真问题的存在制作...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想...
  • 1.背景自适应且不失真问题的...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大...
  • 1.背景自适应且不失真问题的存在 ...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。  根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我
  • android draw9 patch介绍

    2014-02-11 00:49:48
    ...1.背景自适应且不失真问题的存在 ... 制作自适应背景图片UI开发的一个广泛问题,也界面设计师渴望解决的问题,我相信我们彼此都深有体会。... 比如,列表的背景图一定,但是...标题的背景,无论还是竖
  • draw9patch超详细教程

    2013-08-24 10:06:00
    1.背景自适应且不失真问题的存在 制作自适应背景图片UI开发的一个广泛问题,也界面设计师渴望解决的问题,我相信我们彼此都深有体会。 比如,列表的背景图一定,但是...标题的背景,无论还是竖屏,...
  • 1.背景自适应且不失真问题的存在 ...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。  根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我
  • 1.背景自适应且不失真问题的存在 ...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。  根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我
  • draw9patch超详细教程

    千次阅读 2016-11-22 13:47:43
    1.背景自适应且不失真问题的存在...标题的背景,无论还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。 根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

栏是横还是竖