2015-04-29 17:24:14 taotao945mh2006 阅读数 2132
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

最近项目开发过程中,发现华为的荣耀或相关4.0以上的部分手机,其导航栏不是实体键,而是虚拟键的时候,会使得项目的界面变形,因此查找相关资料,发现隐藏导航栏代码,记录如下。

view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

PS:仅限于API level 11以上

2016-12-19 14:10:33 wszonline 阅读数 718
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

android上层广播的应用非常强大,关于android导航栏隐藏及显示,总结如下:


framework下grep广播字符串“com.android.systembar.hide”



这里进行广播接收,判断是隐藏或显示,然后去执行(mBroadcastReceiver方法下)


SYSTEMUI_HIDEBAR_ACTION添加如下:


removeBar()函数如下:



addBarInside()函数如下:



上面即是导航栏隐藏和显示的执行代码,下面看看设置里如何运行的

packages下grep广播字符串“com.android.systembar.hide”



如下:



如果提示getContentResolver()未定义,可以使用mContext.getContentResolver()

如果提示未识别Settings.System.ALWAY_HIDE_STATUSBAR,可以使用字符串“alway_hide_statusbar”代替

头文件import android.provider.Settings

注意权限问题


上面是设置---显示---隐藏状态栏的实现,若想在别的地方随意执行,参考如下:




2017-08-23 09:34:00 ShawnXiaFei 阅读数 161
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

Android隐藏状态栏、导航栏

private void hideStatusNavigationBar(){  
    if(Build.VERSION.SDK_INT<16){  
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
                WindowManager.LayoutParams.FLAG_FULLSCREEN);  
    }else{  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_FULLSCREEN //hide statusBar  
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; //hide navigationBar  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    }  
}

Android 动态隐藏显示导航栏,状态栏

一、导航栏:
private void hideNavigationBar() {  
    View decorView = getWindow().getDecorView();  
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
            | View.SYSTEM_UI_FLAG_FULLSCREEN;  
    decorView.setSystemUiVisibility(uiOptions);  
}  
  
private void showNavigationBar() {  
    View decorView = getWindow().getDecorView();  
    int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;  
    decorView.setSystemUiVisibility(uiOptions);  
}

相关:

Attr Des
SYSTEM_UI_FLAG_VISIBLE 显示状态栏和导航栏
SYSTEM_UI_FLAG_LOW_PROFILE 此模式下,状态栏的图标可能是暗的
SYSTEM_UI_FLAG_HIDE_NAVIGATION 隐藏导航栏
SYSTEM_UI_FLAG_FULLSCREEN 全屏,隐藏状态栏和导航栏
SYSTEM_UI_FLAG_LAYOUT_STABLE
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 全屏,隐藏导航栏,状态栏浮在布局上
SYSTEM_UI_FLAG_IMMERSIVE 沉浸式:半透明的状态栏和导航栏
SYSTEM_UI_FLAG_IMMERSIVE_STICKY 粘性沉浸式
二、状态栏:
private void setStatusBarVisible(boolean show) {  
    if (show) {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    } else {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_FULLSCREEN;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    }  
}
三、导航栏和状态栏
private void setSystemUIVisible(boolean show) {  
    if (show) {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    } else {  
        int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE  
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
                | View.SYSTEM_UI_FLAG_FULLSCREEN;  
        uiFlags |= 0x00001000;  
        getWindow().getDecorView().setSystemUiVisibility(uiFlags);  
    }  
}
2015-04-14 14:05:06 miaowei163 阅读数 144
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

Android App 隐藏显示标题栏、状态栏、导航栏

 

1. 隐藏当前Activity标题栏
    在当前Activity中调用:this.requestWindowFeature(Window.FEATURE_NO_TITLE);

2. 隐藏当前Activity状态栏(Status Bar)
2.1 Android 4.0 and Lower

public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        // If the Android version is lower than Jellybean, use this call to hide  
        // the status bar.  
        if (Build.VERSION.SDK_INT < 16) {  
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);  
        }  
        setContentView(R.layout.activity_main);  
    }  
    
}  

 

2.2 Android 4.1 and Higher

View decorView = getWindow().getDecorView();  
// Hide the status bar.  
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;  
decorView.setSystemUiVisibility(uiOptions);  
// Remember that you should never show the action bar if the  
// status bar is hidden, so hide that too if necessary.  
ActionBar actionBar = getActionBar();  
actionBar.hide(); 

 

3. 隐藏当前Activity界面的导航栏(NavigationBar),在定制项目实际中遇到过
    在Android4.0及以后版本中,可通过以下方法隐藏NavigationBar

View decorView = getWindow().getDecorView();  
// Hide both the navigation bar and the status bar.  
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as  
// a general rule, you should design your app to hide the status bar whenever you  
// hide the navigation bar.  
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION  
              | View.SYSTEM_UI_FLAG_FULLSCREEN;  
decorView.setSystemUiVisibility(uiOptions); 

 

4. 隐藏所有Activity界面的标题栏
 修改AndroidManifest.xml
 在application 标签中添加a
    android:theme="@android:style/Theme.NoTitleBar"

5. 隐藏所有Activity界面的TitleBar 和StatusBar
  修改AndroidManifest.xml
  在application 标签中添加
  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

2015-10-26 17:36:34 CSDNYUANDAIMAXUEXI 阅读数 2422
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义
因为项目需要, 要实现屏幕全屏,隐藏虚拟按键,即导航栏
 SYSTEM_UI_FLAG_LOW_PROFILE 相当于隐藏导航栏
 SYSTEM_UI_FLAG_VISIBLE         导航栏显示
 SYSTEM_UI_FLAG_HIDE_NAVIGATION 要求导航栏完全隐藏-->但这对部分硬件设备有效


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
    <TextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="单击屏幕,隐藏或显示导航栏"
            />
</LinearLayout>




第一种方法:直接隐藏掉当前activity的导航栏


package com.example.setbutton;  
  
import android.os.Bundle;  
import android.app.Activity;  
import android.view.View;  
import android.view.Window;  
import android.view.WindowManager;  
public class MainActivity extends Activity {  
  
    Window window;  
  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        // main = getLayoutInflater().from(this).inflate(R.layout.main, null);  
        window = getWindow();  
        WindowManager.LayoutParams params = window.getAttributes();  
        params.systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE;  
        window.setAttributes(params);  
  
        setContentView(R.layout.main);  
    }  
  
}  




第二种方法:点击触发显示或隐藏


package com.ncsyeyy.YeyyHideNavigator;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;


public class MyActivity extends Activity {


    private TextView tv;
    private View rootView;


    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        findView();
        setListener();
    }


    private void setListener() {
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                得到当前根view的状态
                int i=rootView.getSystemUiVisibility();
                Log.e("setOnClickListener",i+"");


//                如果当前导航栏显示,就设置为隐藏
                if (i==View.SYSTEM_UI_FLAG_VISIBLE){
//                    设置当前根视图的显示形式
                    rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                }
            }
        });


        rootView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                Log.e("OnSystemUiVisibilityChangeListener",visibility+"");


//                根据当前view的显示状态进行不同的提示
                if (visibility==View.VISIBLE){
                    Toast.makeText(MyActivity.this,"显示导航按钮",Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(MyActivity.this,"隐藏导航按钮",Toast.LENGTH_LONG).show();
                }
            }
        });
    }


    private void findView() {
        tv = (TextView) findViewById(R.id.tv);
//        得到当前窗口的根view
        rootView = getWindow().getDecorView();
//        设置根view的导航栏为隐藏
        rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);


    }
}



       

博客地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/9214587

没有更多推荐了,返回首页