2013年5月24日 星期五

Android Graphical Layout 設定Fullscreen 與 直/橫 模式


  • 透過 Android Graphical Layout 切換 Portrait Mode 與 Landscape Mode:
  1. 點選專案中 Layout 的 XML 檔案
  2. 點選 Graphical Layout tab menu (基本上預設會選擇此選項,如果你有點選過 查看 xml 檔案的 tab menu,擇點選時還是會先開啟 查看 XML 的 tab menu,這時可以再點選Graphical Layout)
  3. 可以點選下圖中的圖示或者旁邊下拉的箭頭,選擇 Switch to Landscape,就可以將 Layout 切換成 Landscape Mode (如果則是做切換,可以直接按該圖示即可)。

  • 透過 Android Graphical Layout 將 Layout 特定成 Full Screen 的樣式來檢視:
  1. 在 Graphical Layout 下,點選 AppTheme後會彈出下拉選單。
  2. 選擇 Theme -> Theme.Black.No.TitleBar.FullScreen  即可;基本上你只要設定XXX.No.TitleBar.FullScreen 即可讓 Layout 呈現 Full Screen 的樣式來檢視。注意,這只是讓你檢視 Layout 在 Full Screen 下元件的布局,並不會因此讓你的Application變成 FullScreen。



  • 設定 Theme.Black.No.TitleBar.Fullscreen的效果如下



2013年5月22日 星期三

Android Full Screen Activity

要製作 Full Screen 的 Activity 的方法大致上分成下列兩種,

  1. 在 AndroidManifest.xml 中設定 Theme.NoTitleBar.Fullscreen。
  2. 在 Java 檔案中透過 requestWindowFeature + WindowManager.LayoutParams.FLAG_FULLSCREEN 或者 setTheme( ) 方法設定。
在 AndroidManifest.xml 檔案中設定, 假如你要讓你所有程式中的 Activity 都是 Full Screen 你可以加在 Application tag 下,而如果只要單純設定一個 Activity 則加入到你想要設定的 Activity tag 下。範例如下所示:

  • 套用整個程式的 Activity
<application
...
android:theme=

"@android:style/Theme.NoTitleBar.Fullscreen" >
</application>
  • 只套用在所設定的 Activity
<activity
android:theme=

"@android:style/Theme.NoTitleBar.Fullscreen" >
...
</activity>

在 java 檔案中設定,你可以將下面的程式碼加到 onCreate( ) method 之中

requestWindowFeature(Window.FEATURE_NO_TITLE);
 
//fullscreen

this.getWindow().setFlags(

     WindowManager.LayoutParams.FLAG_FULLSCREEN,
     WindowManager.LayoutParams.FLAG_FULLSCREEN );


或者
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);


完整的程式碼如下:

package com.example.fullscreendemo; import android.os.Bundle; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set Full screen in Java file method 1 //turn off the window's title bar //requestWindowFeature(Window.FEATURE_NO_TITLE); // fullscreen //this.getWindow().setFlags(
// WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN);
LinearLayout ll =
new LinearLayout(getApplicationContext());
ll.setOrientation(LinearLayout.VERTICAL);
ll.setGravity(/*Gravity.CENTER*/Gravity.TOP);
LinearLayout.LayoutParams lp =
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
ll.setLayoutParams(lp);
ll.setBackgroundResource(
R.drawable.background2);
// Set Full screen in Java file method 2
setTheme(
android.R.style.Theme_NoTitleBar_Fullscreen);
setContentView(ll); }
}
另外,我發現透過程式碼設定 Full Screen,在 emulator 上面執行,會先看到原本含有 title bar的 Activity,然後才淡出變成 Full Screen (如下圖),而透過 AndroidManifest.xml 檔案設定則沒有這個問題,所以想要在一開始就設定 Full Screen 的 Activity,還是透過 AndroidManifest.xml 檔案設定比較理想。


範例的結果:

透過 getDisplayMetrics 方法取的裝置解析度以及判斷直/橫模式

首先透過 getResources( ) 方法取得 Resources 物件,再經由 Resources 物件的 getDisplayMetrics( ) 方法取得與目前顯示相關的物件 DisplayMetrics,之後再透過  widthPixels (寬) 與 heightPixels (高) 的值來判斷目前顯示是直式(PORTRAIT Mode)或橫式 (LANDSCAPE Mode)。

範例程式如下:

package com.example.screenresolutiondemo;

import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TextView tv = new TextView(getApplicationContext());
  Resources res = getResources();
  DisplayMetrics metrics = res.getDisplayMetrics();
  tv.setText("螢幕資訊:\n");
  tv.append("寬:" + metrics.widthPixels + "\n");
  tv.append("高:" + metrics.heightPixels + "\n");
  tv.append("DPI:" + metrics.densityDpi + "\n");
  
  if (metrics.widthPixels < metrics.heightPixels) {
   tv.append("目前是直式\n");
  } else {
   tv.append("目前是橫式\n");
  }  
  setContentView(tv);
 }
}
範例結果:

切換 Android emulator 直/橫 顯示

今天想要在 Android emulator 上測試切換 直 / 橫 模式,但不知道快速鍵為何,上網快速查詢瞭一下,在 "How to rotate the Android emulator display?" 上找到想要的資料如下:

Windows: CTRL + F11 or CTRL + F12

Mac: Fn + Ctrl + F12

另外,你也可以在 Android Emulator 上找到更多可用的 Android emulator 快速鍵。

利用 Google Code Prettify + CSS 測試張貼程式碼

下面是參考 "改善Google Blog 顯示程式碼的簡單方案 Google Code Prettify + CSS" 該篇文章所呈現出來的效果,如果想要知道如何在Google Blog 張貼程式碼可以參考該篇文章。

    public class HelloWorld {
        public static void main(String [] args) {
            System.out.println("Hello World!");
        }
    }
設定好之後,就可以透過下面的方式張貼出有 Highlight Syntax 的程式碼了。
<pre class="prettyprint code">
   輸入想顯示的程式碼
</pre>