2013年5月15日 星期三

TFT-LCD vs. OLED vs. PMOLED vs. AMOLED vs. Super AMOLED

TFT-LCD
  • 在 AMOLED 出現之前,佔最大量比例的螢幕技術。
  • 兩塊玻璃中間夾著液晶,就像計算機或是電子錶的螢幕那樣(非彩色的),LCD本身不發光,我們之所以能看到螢幕成像,是因為螢幕後面還有一層背光模組將光線透過玻璃讓我們看見各種顏色,所以螢幕有兩層
  • LCD 面板加上背光模組再怎麼薄也薄不過本身就會發光的螢幕面板吧! 因此OLED技術就慢慢抬頭。

OLED = 有機發光二極體。
  • 使用黑色畫面能有省電的效果。
  • 因為每個 pixel 都會發光,越亮則需要更多能量

PMOLED = Passive Matrix OLED

AMOLED = Active Matrix OLED
  • 自發光的OLED技術,在原有的 TFT-LCD 技術上加引延伸發展。
  • ex: Google Nexus、Galaxy S2、Galaxy Tab。
  • 缺點:
    • 在大太陽下看不清楚畫面。
    • 螢幕顏色雖然豔麗,但是還原不夠真實,時常在拍照後從手機螢幕上看起來很好看,實際存到電腦後才發現顏色不對。
    • 烙印問題。
      • 由於 AMOLED 每個像素都會自己發光,因此不像 TFT-LCD 那樣一整片背光,即使年久老化後也只會整片光度不如以往;
      • 但是 AMOLED 每個像素都有自身的壽命,如果某塊區域長期顯示高光源,便會老化得比周圍像素快很多,就像燈泡點愈久光度愈暗那樣,造成圖像像是印在螢幕上,也就是烙印的原因。
      • 最常出現烙印的區域是螢幕最上方的通知列,因為這裡的像素使用率較其他區域低,所以很容易產生烙印。
  • 優於 TFT-LCD 的原因:
    • 更優異的視角。
    • 色彩對比。
    • 反應速度。
    • 因為不需背光模組,因此成本更低,也比較省電。
  • 比 PMOLED 適合用在手機或平板裝置上,優點有:
    • 耗電量低
    • 更新時間快
    • 反應速度快


Super AMOLED
  • 比原來的技術更亮(約提昇 18%), 顏色更鮮艷。
  • 將觸控層由原本分離的構造整合進螢幕本身,達到更輕薄的目標。
  • 優點:
    • 耗電量更低,亮度也愈亮。
    • 傳統的三原色 RGB 顯示方式是除了三個原色的互相搭配調出來的各種顏色,還有三原色全開的白色與三原色全關閉時的黑色;
    • 不過 Super AMOLED 使用了新的子像素排列方式,稱為「PenTile」,相比傳統的 RGB 更多了一個白色子像素,因此即使是顯示純白色的畫面都不需將所有顏色全開,只要單純顯示白色就好了。
  • 缺點:
    • PenTile 的排列方式會造成文字周圍有毛邊鋸齒。
    • 畫質下降。
      • PenTile 的每個單獨子像素都可以與鄰近的子像素搭配來產生顏色,不必像傳統 RGB 一定得 3 個子像素同時運作;
      • 如此一來即可最少以 2 種顏色來搭配顯示,達到近似的效果。既然可以用 2 色即可達成顯色目標,那不顯示的子像素當然會對畫質產生影響。


* Reference
- 讓手機畫面更鮮艷的AMOLED螢幕顯示技術 | T客邦 - 我只推薦好東西
- T小編烙行話:AMOLED 怎麼讀?Kepler 又是啥?
- Battery Saver Tips & Tricks - How to extend your Android's battery!

2013年5月14日 星期二

[Android] onSaveInstanceState/onRestoreInstanceState

  • 在離開畫面時 onSaveInstanceState() 會被呼叫並保存下當時畫面狀態於 bundle 中,以預防此畫面被不預期關閉; 這樣要重新開啟時,onRestoreInstanceState() 能藉由保存下來的資料來回到關閉前的狀態。
  • 預設會保留住 setContentView 狀態 (ex: 輸入值)。
  • onSaveInstanceState 一定會發生在 onStop 前 但不一定是在 onPause 前或後。
  • 從 Honeycomb 開始 在收到 onStop 回傳前 都不是 kiiable status 這時 onSaveInstanceState 可能會在 onPause 後才被呼叫。

Activity a to Activity b running orders:
  • Open b in a
    • a: onSaveInstanceState -> onPause -> onStop
  • Change orientation:
    • a: onSaveInstanceState -> onPause -> onStop -> onDestroy -> onCreate -> onStart -> onRestoreInstanceState -> onResume
  • Open b with dialog theme in a:
    • a: onSaveInstanceState -> onPause (因為還能看到 a 所以不會呼叫 onStop()!)


以下狀態下不會呼叫 onRestoreInstanceState
  • 從程式集開啟 app 時。
    • onCreate -> onStart -> onResume
  • 從 Activity b 返回 Activity a。
    • onRestart -> onStart -> onResume


* Reference
- onSaveInstanceState
- onRestoreInstanceState

[Linux] shell

當你要電腦傳輸出來『音樂』的時候,你的電腦需要什麼東西呢?
  • 硬體:當然就是需要你的硬體有『音效卡晶片』這個配備,否則怎麼會有聲音;
  • 核心管理:作業系統的核心可以支援這個晶片組,當然還需要提供晶片的驅動程式囉;
  • 應用程式:需要使用者 (就是你) 輸入發生聲音的指令囉!
步驟:
  1. 你必須要『輸入』一個指令之後,『硬體』才會透過你下達的指令來工作!
  2. 透過『 Shell 』將我們輸入的指令與 Kernel 溝通,kernel 控制硬體工作。

from http://linux.vbird.org/linux_basic/0105computers/os_01.gif

  • 只要能夠操作應用程式的介面都能夠稱為殼程式。
  • 狹義的殼程式指的是指令列方面的軟體,ex: bash 等; 廣義的殼程式則包括圖形介面的軟體。
  • 殼程式可以呼叫其他軟體。
    • ex: man, chmod, chown, vi, fdisk, mkfs 等等指令。
      • 這些指令都是獨立的應用程式,透過殼程式 (就是指令列模式) 來操作這些應用程式,讓這些應用程式呼叫核心來運作所需的工作。
  • shell 可分為多種:
    • 在 Sun 裡頭預設的 C SHell、 商業上常用的 K SHell、 TCSH 等等。
    • 至於 Linux 使用的這一種版本就稱為『 Bourne Again SHell (簡稱 bash) 』。
    • 是 Bourne Shell 的增強版本,也是基準於 GNU 的架構下發展出來的!


* Reference
- 鳥哥的 Linux 私房菜 -- 學習 bash shell

2013年5月12日 星期日

[Graphic] Vector Drawables

Drawable 分為兩類:


Bitmap Drawables
  • Bitmap files, ex:
    • PNG which are rendered as images by the OS.
    • 9-patch bitmaps which enable the OS to anamorphically distort the image to fit a particular region.
Vector Drawables
  • Consist of XML files which contain some basic vector drawing command which the OS renders dynamically at runtime.
  • 缺點:
    • Require more processing power to render,particularly gradients; 
    • The drawing primitives are not as flexible as those in your favorite image manipulation software.


兩種差異是單一的 vector drawable 在不同顯示規格下的縮放表現較好(a single vector drawable will scale much better on a variety of different display types)。


* Reference
- Vector Drawables – part 1

[Android] context for SharedPreferences

  • Does not support use across multiple processes
  • SharedPreferences of specific name is a single instance of this class that all clients share.


Relative post
[Android] Context


* Reference
- SharedPreferences
- getSharedPreferences (String name, int mode)
- android - Application context for SharedPreferences? - Stack Overflow
- android - SharedPreferences application context vs activity context - Stack Overflow