/development/samples/ApiDemos/src/com/example/android/apis/view/SystemUIModes.java
Java | 366 lines | 309 code | 34 blank | 23 comment | 22 complexity | 5b4c13e483f6d0a5b2c5a29eb11246b2 MD5 | raw file
- /*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.example.android.apis.view;
- import android.app.ActionBar;
- import android.app.Activity;
- import android.app.FragmentTransaction;
- import android.app.ActionBar.Tab;
- import android.content.Context;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.util.AttributeSet;
- import android.util.DisplayMetrics;
- import android.view.ActionMode;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.CheckBox;
- import android.widget.CompoundButton;
- import android.widget.ImageView;
- import android.widget.SearchView;
- import android.widget.ShareActionProvider;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.SearchView.OnQueryTextListener;
- import com.example.android.apis.R;
- /**
- * This activity demonstrates some of the available ways to reduce the size or visual contrast of
- * the system decor, in order to better focus the user's attention or use available screen real
- * estate on the task at hand.
- */
- public class SystemUIModes extends Activity
- implements OnQueryTextListener, ActionBar.TabListener {
- public static class IV extends ImageView implements View.OnSystemUiVisibilityChangeListener {
- private SystemUIModes mActivity;
- private ActionMode mActionMode;
- public IV(Context context) {
- super(context);
- }
- public IV(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public void setActivity(SystemUIModes act) {
- setOnSystemUiVisibilityChangeListener(this);
- mActivity = act;
- }
- @Override
- public void onSizeChanged(int w, int h, int oldw, int oldh) {
- mActivity.refreshSizes();
- }
- @Override
- public void onSystemUiVisibilityChange(int visibility) {
- mActivity.updateCheckControls();
- mActivity.refreshSizes();
- }
- private class MyActionModeCallback implements ActionMode.Callback {
- @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- mode.setTitle("My Action Mode!");
- mode.setSubtitle(null);
- mode.setTitleOptionalHint(false);
- menu.add("Sort By Size").setIcon(android.R.drawable.ic_menu_sort_by_size);
- menu.add("Sort By Alpha").setIcon(android.R.drawable.ic_menu_sort_alphabetically);
- return true;
- }
- @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return true;
- }
- @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- return true;
- }
- @Override public void onDestroyActionMode(ActionMode mode) {
- mActionMode = null;
- mActivity.clearActionMode();
- }
- }
- public void startActionMode() {
- if (mActionMode == null) {
- ActionMode.Callback cb = new MyActionModeCallback();
- mActionMode = startActionMode(cb);
- }
- }
- public void stopActionMode() {
- if (mActionMode != null) {
- mActionMode.finish();
- }
- }
- }
- private void setFullscreen(boolean on) {
- Window win = getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_FULLSCREEN;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
- private void setOverscan(boolean on) {
- Window win = getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
- private void setTranslucentStatus(boolean on) {
- Window win = getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
- private void setTranslucentNavigation(boolean on) {
- Window win = getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
- private String getDisplaySize() {
- DisplayMetrics dm = getResources().getDisplayMetrics();
- return String.format("DisplayMetrics = (%d x %d)", dm.widthPixels, dm.heightPixels);
- }
- private String getViewSize() {
- return String.format("View = (%d,%d - %d,%d)",
- mImage.getLeft(), mImage.getTop(),
- mImage.getRight(), mImage.getBottom());
- }
- void refreshSizes() {
- mMetricsText.setText(getDisplaySize() + " " + getViewSize());
- }
- static int TOAST_LENGTH = 500;
- IV mImage;
- CheckBox[] mCheckControls = new CheckBox[8];
- int[] mCheckFlags = new int[] { View.SYSTEM_UI_FLAG_LOW_PROFILE,
- View.SYSTEM_UI_FLAG_FULLSCREEN, View.SYSTEM_UI_FLAG_HIDE_NAVIGATION,
- View.SYSTEM_UI_FLAG_IMMERSIVE, View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY,
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE, View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- };
- TextView mMetricsText;
- public SystemUIModes() {
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.system_ui_modes);
- mImage = (IV) findViewById(R.id.image);
- mImage.setActivity(this);
- CompoundButton.OnCheckedChangeListener checkChangeListener
- = new CompoundButton.OnCheckedChangeListener() {
- @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- updateSystemUi();
- }
- };
- mCheckControls[0] = (CheckBox) findViewById(R.id.modeLowProfile);
- mCheckControls[1] = (CheckBox) findViewById(R.id.modeFullscreen);
- mCheckControls[2] = (CheckBox) findViewById(R.id.modeHideNavigation);
- mCheckControls[3] = (CheckBox) findViewById(R.id.modeImmersive);
- mCheckControls[4] = (CheckBox) findViewById(R.id.modeImmersiveSticky);
- mCheckControls[5] = (CheckBox) findViewById(R.id.layoutStable);
- mCheckControls[6] = (CheckBox) findViewById(R.id.layoutFullscreen);
- mCheckControls[7] = (CheckBox) findViewById(R.id.layoutHideNavigation);
- for (int i=0; i<mCheckControls.length; i++) {
- mCheckControls[i].setOnCheckedChangeListener(checkChangeListener);
- }
- ((CheckBox) findViewById(R.id.windowFullscreen)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- setFullscreen(isChecked);
- }
- }
- );
- ((CheckBox) findViewById(R.id.windowOverscan)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- setOverscan(isChecked);
- }
- }
- );
- ((CheckBox) findViewById(R.id.windowTranslucentStatus)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- setTranslucentStatus(isChecked);
- }
- }
- );
- ((CheckBox) findViewById(R.id.windowTranslucentNav)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- setTranslucentNavigation(isChecked);
- }
- }
- );
- ((CheckBox) findViewById(R.id.windowHideActionBar)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- getActionBar().hide();
- } else {
- getActionBar().show();
- }
- }
- }
- );
- ((CheckBox) findViewById(R.id.windowActionMode)).setOnCheckedChangeListener(
- new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- if (isChecked) {
- mImage.startActionMode();
- } else {
- mImage.stopActionMode();
- }
- }
- }
- );
- mMetricsText = (TextView) findViewById(R.id.metricsText);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.content_actions, menu);
- SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
- searchView.setOnQueryTextListener(this);
- // Set file with share history to the provider and set the share intent.
- MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
- ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
- actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
- // Note that you can set/change the intent any time,
- // say when the user has selected an image.
- Intent shareIntent = new Intent(Intent.ACTION_SEND);
- shareIntent.setType("image/*");
- Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
- shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
- actionProvider.setShareIntent(shareIntent);
- return true;
- }
- @Override
- public void onAttachedToWindow() {
- updateCheckControls();
- }
- @Override
- protected void onResume() {
- super.onResume();
- }
- public void onSort(MenuItem item) {
- }
- @Override
- public boolean onQueryTextChange(String newText) {
- return true;
- }
- @Override
- public boolean onQueryTextSubmit(String query) {
- Toast.makeText(this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.show_tabs:
- getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- item.setChecked(true);
- return true;
- case R.id.hide_tabs:
- getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
- item.setChecked(true);
- return true;
- }
- return false;
- }
- @Override
- public void onTabSelected(Tab tab, FragmentTransaction ft) {
- }
- @Override
- public void onTabUnselected(Tab tab, FragmentTransaction ft) {
- }
- @Override
- public void onTabReselected(Tab tab, FragmentTransaction ft) {
- }
- public void updateCheckControls() {
- int visibility = mImage.getSystemUiVisibility();
- for (int i=0; i<mCheckControls.length; i++) {
- mCheckControls[i].setChecked((visibility&mCheckFlags[i]) != 0);
- }
- }
- public void updateSystemUi() {
- int visibility = 0;
- for (int i=0; i<mCheckControls.length; i++) {
- if (mCheckControls[i].isChecked()) {
- visibility |= mCheckFlags[i];
- }
- }
- mImage.setSystemUiVisibility(visibility);
- }
- public void clearActionMode() {
- ((CheckBox) findViewById(R.id.windowActionMode)).setChecked(false);
- }
- }