發表文章

目前顯示的是 9月, 2012的文章

android 多國語言

圖片
如何在軟體中內建多國語言的管理 1. 先了解 SDK 目錄底下所支援的地區跟語言   ->SDK 目錄/platforms/android-xx/data/res/      其中android-xx, 是android 的版本,此處是選 android-12 這裡有很多的   values-XXX1-XXX2  意義如下 values是程式專案中的values 資料匣 XXX1      是 language  ->第二步中會用到 XXX2      是 region       ->第二步中會用到 如 values-zh-rCN->簡體中文 zh       是 Language CN      是 Region(r 是自動生成,所以第二步中只需填入 CN) values-zh-rTW->繁體中文 zh       是 Language TW      是 Region (r 是自動生成,所以第二步中只需填入 TW) 2。在eclipse中新增values。選擇專案後,點擊下圖紅虛線框中的按鈕 出現下圖, 在Resource Type選values. 在 File 中填入 string 然後下一步 如下圖 在左邊選Language,最右邊方框(Language)中填入zh 在左邊選Region,最右邊方框(Region)中填入TW 3.完成 回到project中就會看到多出來values-zh-rTW的目錄,目錄底下就是string.xml。 只要修改string.xml中的文字成對應的語言,軟體文字自動會隨手機設定的語言自己改變。

曼德布洛特集合 Mandelbrot set

圖片
曼德佈洛特集合,是由法國的科學家曼德佈洛特 Benoit B. Mandelbrot(1924-2010)的名字來命名。所謂的集合就是指一群被相同定義的東西的總合。例如勞工朋友們就是一群集合。符合被政府定義為勞工的人都算是勞工集合的一部份。曼德佈洛特指的是符合 Z n+1 =Z n *Z n +C Z與C都是複數。我們找一個C值。那麼 Z 0 =C, Z 1 =Z 0 *Z 0 +C, Z 2 =Z 1 *Z 1 +C...一直算下去,這個過程稱之為疊代。最後,我們會得到一個Z x ,這個值可能一直放大,也可能就趨近一個值。我們要的就是會 趨進一個值的C。在上面主題的圖中,黑色的部分 就是所有會收斂的C的位置。而這一些C被稱為曼德佈洛特集合。 那麼最有趣的地方在那呢?就是在會收斂跟不收斂的邊界。這個邊界 曼德佈洛特命名為碎形。為什麼叫碎形,當然是因為他碎碎的!呵…如何的碎法。只要放大邊界來看,就會發現,圖形是一直自我相似,一直在複製自己,但又不太一樣。這也是這個桌布有趣的地方了,每個人可以找到一個自己特有感覺的邊界,將他放大,放大,再放大。每一次都是無比的驚奇。 你是否看到海岸線的形狀,是否看到樹木的枝幹,是否看到海水的波紋,是否看到人體的器官…沒錯,是乎所有自然界的一切都是以 Z n+1 =Z n *Z n +C這個公式疊代出來的。好神奇,自我相似,自我複製。現在很多的電影特效就是用這種概念製造出來,像爆炸的火焰,煙霧之類,製造出來的效果逼真許多。 說到碎形,我們就得講到碎形的維度。這一段希望大家好好讀一下,不會花太多時間。值得思考。 我們先談什麼是維度。就是我們常聽到的一度空間,二度空間的另一種說法。一度空間就是一維,二度空間就是二維,三度空間就是三維。一維指的就是一直線。二維就是平面。三維就是立體。但碎形呢?因為他是破碎的,所以不會是一維,二維這種整數的維度,而是有小數點的一點多維,二點多維。 這有概念有點怪,平面就平面,立體就是立體,怎麼會有介於平面跟立體之間這種說法。 我們來看看右邊這張圖是謝爾賓斯基地毯(Wacław Franciszek Sierpiński),我們想像有一張正方形的地毯(二維平面),把他分成九宮格後,把中間挖掉。接下來,其於的8個九宮格我

onTouchEvent 單點與多點觸控

以下是一個onTouchEvent的程式寫法, 如果是 public void onTouchEvent(MotionEvent event) , 最後要super.onTouchEvent(event); 如果是 public boolean onTouchEvent(MotionEvent event) , 最後要return true, 有些時候需要用到return false. 有什麼差別呢?我們舉個例。如果有一個linearlayout,我們已經設定onTouchEvent,當手指在這個linearlayout滑動時,linearlayout會做一件事件A。然後我們在這個linearlayout上放上一張圖片,圖片也有設定onTouchEvent滑動時會做事件B。 那麼當我們在圖片上滑動時,是圖片做事件B,還是linearlayout做事件A? 如果只要做事件B,就要return true, 如果事件A跟B都要做,那就要return false。 下面記錄一個範本,供大家使用。 @Override   public void onTouchEvent(MotionEvent event) {                                     int movingMode=0;                    float xDown=0,yDown=0;                    float mX0, mX1, mY0, mY1; ;                    switch(event.getAction() & MotionEvent.ACTION_MASK){                      case MotionEvent.ACTION_DOWN:                           xDown=event.getX();                           yDown=event.getY();                                                     movingMode=1;                                  

InputStream OutputStream

利用InputStream 和 OutputStream實作copy file 和 move file。 InputStream 跟 OutputStream是兩根管子,所有讀進來的東西,都先灌進inputStream裡,所有要寫入的都放進OutputStream裡。接下來的操作就只要從InputStream 和 OutputStream下手即可。如此一來,對於不同的資料來源就變的方便處理, 如網路連線的資料 URL url=new URL(arg[0]);  URLConnection urlc=url.openConnection(); InputStream ins=urlc.getInputStream(); 如對socket的讀取 Socket s = new Socket("www.idon'tknow.com", 1111); InputStream ins = s.getInputStream(); 如處理檔案 InputStream inStream = new FileInputStream(afile); 接下來我們看看move file 跟 copy file的實作。 move file的實作 public static void move(String inputfile, String outputfile) //inputfile 和 outputfile 要絕對路徑     {     try{        File afile =new File(inputfile);        File bfile =new File(outputfile);            InputStream inStream = new FileInputStream(afile);        OutputStream outStream = new FileOutputStream(bfile); //InputStream跟OutputStream都是以byte為單位在處理資料        byte[] buffer = new byte[(int) afile.length()];        int

NumberPicker

圖片
NumberPicker 的使用法 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical" >     <TextView         android:id="@+id/tv"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="@string/hello" />               <NumberPicker android:id="@+id/np"            android:layout_width="wrap_content"            android:layout_height="wrap_content"          android:layout_gravity="center"        /> </LinearLayout> 主程式 public class NumberPickerExampleActivity extends Activity {     /** Called when the activity is first created. */     public NumberPicker np;     public int currentNumber;     public TextView tv;     @Override     public void onCreate(Bundle savedInstanceS