2011年7月1日 星期五

Android改變按鈕顏色

    最近在研究Android 的UI想到需要改變按鈕的顏色,讓UI更漂亮 or 讓使用者知道目前所選擇的項目,Google了一下,有幾種方法,整理讓有需要的人,參考參考!


1. setBackgroundColor
原本的按鈕型式改變了,旁邊的圓弧形不見了,變成了直角,看起跟其它按鈕格格不入。
Button1.setBackgroundColor(Color.GREEN)

2. xml來客製button
利用在xml中設定shape的圖形來畫button,彈性大,可做漸層等效果。
必須先製作一個描述 shape xml
 

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>       
        <shape>
            <gradient
                android:id="@+id/shape"
                android:startColor="#ff0000"
                android:endColor="#ffff00"
                android:angle="270" />
            <corners
                android:radius="10dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
 
然後把Background設成該xml即可
 
Button2.setBackgroundResource(R.layout.button);
 

3. 改變 buttonbackground filter
改變backgound filter來改變顏色,簡單!

Button4.getBackground().setColorFilter(
   0xFF00FF00, 
   android.graphics.PorterDuff.Mode.MULTIPLY );


2011年6月23日 星期四

Eclipse輸入自動提示功能

   話說前陣子重新安裝了 Eclipse之後,輸入自動提示功能就消失了!人是很難回頭的,現在沒有自動提示的功能,幾乎沒有辦法寫程式了!上網找了資料先說一下這個功能在Eclipse中叫做 Auto-Activation 有幾個選項


Auto activation delay : 要停留多久才出現提示,如果不想等待的話,就設成 0 吧!當然如果你希望機器給你點回憶的時間,享受打字的快感,就設長一點吧!
Auto activation triggers for Java : 什麼時候會出現提示,預設是 ".",就是在找物件裏面的東西才出現,有人建議把 a~z, A~Z都加入,看個人需求囉!

Auto activation triggers for Javadoc : 用在doc的提示

   OK,故事還沒有說完,檢查了一下,這些設定都沒有錯,怎麼Eclipse還是沒有提示?
再查了一下,原來這個只是提示的功能設定,至於要提示些什麼在Advanced下面,把Java Proposals 打勾即可!應該是我的Eclipse下是載Classic版,所以預設沒有打勾吧!上次就沒有遇到這個問題。

2011年6月21日 星期二

Android開發環境安裝

看了Google I/O 發現最新的開發環境多了不少的方便的東西,就重裝一下Android開發環境,順便把過程記錄下來!之前第一次安裝時,對於EclipseAndroid沒有什麼概念,所以安裝時就是step by step,不知道自己在做什麼。
這次先說一下安裝的概念好了,用的開發環境是Eclipse,這是個用Java開發的多元開發環境,既然是用Java開發的,就需要安裝JDK才可以用囉!另外因為Eclipse是多元開發環境,意思就是你可以拿他來開發PHP, Java, C/C++等!靠不同的plug-in就可以開發不同的語言,當然你也需要該語言的SDK才行,所以還要兩個東西,AndroidSDKEclipse Androidplug-in,也就是ADT (Android Development Tools)。了解了這些再來安裝,心中就有個地圖,萬一出現問題也比較有個方向囉!

1. Install JDK
下載 JDK




2. Install Android SDK


下載Android SDK
 

3. Install Eclipse

下載Eclipse Classic
 

4. Install ADT into Eclipse
啟動EclipseHelp->Install NewSfotware下的Work with 輸入

下方就會出現Developer Tools選擇裏面的Android Development Tools安裝
 

5. Setup Android SDK location
啟動EclipseWindow->Preferences選到Android
選擇Android SDK位置 ex. D:\android-sdk
 


6. Start your first project
安裝好了!就來個hello, world吧!
先啟動一個虛擬的Android手機


接著就可以在上面測試你的程式囉!Just do it…


2011年4月23日 星期六

暗棋--卒

前陣子買了新的Android手機,因為老爸很喜歡跟小朋友玩暗棋,於是上了Market找暗棋程式,但是只找到一個免費,而且功能不足。沒有show出已經被吃掉的棋子,也沒有悔棋的功能!好用的軟體,就是你可以自己修改成想要的樣子,就自己動手來寫一個吧!花了大概二個星期的時間,總算有了一個大概的樣子,順便了解Android的架構,應用程式的生命流程,各種控制元件。
既然寫好了,不然就放上Market分享給別人吧!圖形改選什麼好呢?別人的象棋、暗棋都是放"帥" or "將",我的就放個 "卒" 好了!

暗棋  








收獲有三:
1. 放上之後沒有多久,就有另一個比較專業的暗棋程式也放上Market了,看來有達到拋磚引玉的效果。
2. 在學習中對於Android的系統更了解,App的操作也更深入的了解。
3. download的程式,記得注意要求的功能,不然電話裏面的通話記錄、位址、私人的訊息很容易就"流"出去了!如果程式中要求過多的存取權限,千萬要小心為上!

2011年3月1日 星期二

Hello World 就行了

最近看到一篇文章題目為 十年磨一劍,開發功力需要實戰累積
作者從另一篇文章
Teach Yourself Programming in Ten Years(花十年的時間學習程式設計)
衍生出來的感想!
這些xx天學會什麼的書,我雖然一本都沒有買過,但是卻看過不少!
其實有些寫的還不錯,雖然我從來也沒有在xx天內讀完它過!
程式語言學多了,其實看內容就大同小異,不外是
1. 變數宣告
2. function宣告
3. 有物件導向觀念加上物件宣告
4. 有視窗元件的講一下視窗其本元件
5. 再加上Thread、Framework等有的沒有的
如果問說真的有辦法在幾天內學完嗎?
當然有,我通常看一下目錄,學到Hello World!範例就學完了。
後面的看你要用什麼再研究就好了!這麼說吧,如果你今天打算寫網路Server的程式,
你後面就看網路的部分,你的程式根本用不著什麼checkbox、radio box、dialog的...
反而在網路的socket、TCP/IP要下功夫,這可能根本就不關這個程式語言的範圍。
你可能要換一本xx天學會網路Server的書。
這也是這一篇標題的由來,Hello World就行了。從我最早接觸的Quick Basic開始學過的Hello World我也不知道有多少了。
於是有了一個idea來收集一些學過的Hello World當作紀念,這樣子大家就可以把買這些書的錢都省下來了,這篇該改名為一小時學會十種程式語言吧...

聽說Hello World也是有規定的全部小寫,逗號後空一格,不加驚嘆號(ex. "hello, world"),原來很多人連Hello World都寫不好!果真魔鬼就在細節裏...

QBASIC
CLS
string$ = "hello, world"
LOCATE 13,40
PRINT string$
END

Pascal
program HelloWorld;
begin
writeln('hello, world');
end.

C
#include <stdio.h>
main()
{
printf("hello, world");
}

C++
#include <iostream>
int main(int argc, char *argv[])
{
cout << "hello, world" << endl;
}

Java
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("hello, world");
}
}

Perl
#!/usr/bin/perl
print "hello, world";

Python
#!/path/to/python
print "hello, world";

行文至此才發現網路上已有收集好的範例,有興趣看看吧
wikipedia上的介紹
http://en.wikipedia.org/wiki/Hello_world_program_examples
中文wikipedia上的介紹,內容比英文的還豐富,雖然排版有點亂,看來中文的時代要來
http://zh.wikipedia.org/wiki/Hello_World

後記,現在的program language其實很大的部分是要學Framework的架構,特別是視窗相關的程式,光了解其程式的開始和結束的流程,相對應的function呼叫,就要花不少時間,有時候還摸不著邊,因為細節都被在Framework做掉了,你只是改寫其中幾個動作而已!所以這些視窗程式的hello, world還真是沒有什麼參考價值,程式根本不是從你寫的這個function進來和結束的。