Android 筆記

教學網站
http://code.google.com/p/androidbmi/wiki/AndroidUI
http://ccckmit.wikidot.com/ga:coding
http://blog.chinatimes.com/tomsun/archive/2010/09/16/539502.html
http://www.moke.tw/wordpress/computer/advanced/209
http://www.cnblogs.com/salam/tag/Android2.2/

1.從 res-layout- main.xml 可以拉元件
2.res-values-string.xml 可設定要用的字串
  設好字串給 main.xml 用
  android:text= 直接用字會 有警告

res-values 按右鍵 new ->file 新增 advice.xml
 然後跟string.xml 一樣 add string


Android 中所有的資源檔案(圖片、XML等)命名都必須使用英文小寫,檔名中間只允許加上底線「」符號
其他的檔名都會造成無法正常產生R.java 檔,讓你的程式無法編譯。


ctrl-shift-O
寫程式時 忘了 import 甚麼咚咚 就按 ctrl-shift-O 會自己幫你找
@Override
下載 app
http://www.netmite.com/android/mydroid/packages/apps/AlarmClock/
http://www.gitorious.org/0xdroid/packages_apps_alarmclock/trees/master

public void onCreate(Bundle savedInstanceState) {
}
這個方法傳入了一個名為「savedInstanceState」的「Bundle」型別參數,「Bundle」型別正是來自我們前面所導入的 Package 之一。我們並不需要知道太多「Bundle」型別或「savedInstanceState」實體的細節,只要知道「Bundle」的內容與手機平台的記憶體管理有關。

當 Android 應用程式啟動、換到背景等待、關閉時,都會用到 「savedInstanceState」 這個實體來處理記憶體相關的事宜。當然,你也可以用其他名稱來代替它。還好「onCreate」這個方法永遠都是傳入「Bundle savedInstanceState」這個參數,寫應用程式時只要正確照規定傳入即可,你可以不用太去在意它。

給對 Bundle 是什麼有興趣的讀者:
「Bundle」可以保存程式上一次關閉(凍結)時的狀態。你可以透過覆寫 onFreeze 方法(與 onCreate 方法的作用類似) 來保存凍結前的狀態。 當程式啟動(Activity 重新初始化)時,會再次呼叫 onCreate 方法,你就能從 savedInstanceState 中得到前一次凍結的狀態。我們也可以透過「Bundle」來將這個 Activity 的內容傳到下一個 Activity 中。 之後講 Activity 時,也會講解 onCreate/onFreeze 等方法的關係。


任何一個 Android 專案目錄裡,只要打開「
android 4.0.3->android.jar   目錄的「android.app」 分類,都可以找到 「Activity.class」這個類別。現在我們再深入一些查看「Activity.class」 類別。


 super.onCreate(savedInstanceState);
「super」是關鍵字。代表著這個 「Bmi」 類別的上層類別(Activity)。「super.onCreate(savedInstanceState);」的意思就是:「執行 Activity 類別中 onCreate 方法的內容」。這麼做的目的是什麼呢?

Google Android 將其應用程式的介面稱為視圖(View),而負責控制各種動作行為的程式主體(Controller),則稱為活動(Activity)。因此一個 Android 應用程式,必定會對應到一個以上的 Activity。 「onCreate」 方法則是每個 Activity 類別初始化時都會去呼叫的方法。我們想做的事,是保持原本「onCreate」 方法預設的動作,然後在其中加入我們想要的內容。

 Android 產生的程式預設卻覆載(@Override)了「Bmi」 類別的「onCreate」 方法。原本繼承自 「Activity」類別的「onCreate」方法,其原本內容都被覆載掉了。因此想將原本的「onCreate」方法內容保留,並在其中加入我們的內容的話,就要使用「super」語句

透過「super.onCreate(savedInstanceState);」語句,會先將原本「Activity」類別中的「onCreate」方法執行一次,然後再執行我們覆寫的「onCreate」方法裡面其他的程式內容。

方法一:(完全透明
在 AndroidManifest.xml 中,為該 Activity 加上一行「android:theme="@style/Theme.Translucent""」
(自定透明程度)
在 AndroidManifest.xml 中,為該 Activity 加上一行「android:theme="@style/Theme.Transparent"」
在 res/values/styles.xml res/values/styles.xml

<resources>
<color name="custom_theme_color">#aa000000</color>
其中那個 #aa000000 的前兩位就是指定透明程度(00:最透明,ff:最不透明)
color.xml的#5000000前两位是透明的效果参数从00 到 ff(透明--不么透明),后6位是颜色的设置
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/custom_theme_color</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>

Button或者ImageButton的背景设为透明或者半透明
半透明:<Button android:background="#e0000000" ... />
透明:    <Button android:background="#00000000" ... />
颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff);“bb=blue”(00 到 ff);“gg=green”(00 到 ff);“rr=red”(00 到 ff)。例如,如果您希望对某叠加层应用不透明度为 50% 的蓝色,则应指定以下值:7fff0000
设置背景图片透明度(超简单)
Java代码
View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id
v.getBackground().setAlpha(100);//0~255透明度值



this 是获取当前对象的context,而getApplicationContext()是获取整个应用程序的context

this 是因为Activity 扩展了Context,其生命周期是Activity 创建到销毁;

getApplicationContext 取得的Context是和Application关联的生命周期是应用的创建到销.

搞清楚了生命周期就不会在使用过程中犯错误.
比如有一个全局的数据操作类,用到了context, 这个时候就要用到getApplicationContext ,
而不是用ACtivity, 这就保证了,数据库的操作与activity无关.


留言

熱門文章