Java、Android 開發筆記

[Android 開發] 如何把 Eclipse 專案轉移到 Android Studio?

如果你是 Android 工程師,那麼你要注意的是,Android Studio 已經成為官方指定的開發工具了,目前許多人都還是使用 Eclipse 的開發方式,不過將來勢必有一天一定要將專案轉移至 Android Studio 來進行開發。而如果將原本的 Eclipse 專案匯出至 Android Studio 呢?其實很簡單,只要依下列的方式就可以了。

 

在使用 Android Studio 前,可以先「從本站下載 Android Studio」,並且觀看基本教學,當然最後會出現觀迎畫面,理論上是要選擇【Import Non-Android Studio Project】,不過先不要動作,先打開 Eclpise 或是 ADT Bundle

Continue reading

[教學] 如何使用 Eclipse、Android SDK、ADT 配置 Android 開發環境 ? (Android SDK 24.0.2 版下載)

Android 開發工程師在開發 Android 程式前,一定要先佈屬好 Android 的開發環境,而目前比較受到大家推薦的開發工具莫過於是 Eclipse 了,另外佈屬 Android SDK 也是一個必要的程序,而在之前海芋教過如何使用「ADT Bundle」來配置,不過應該有人跟海芋一樣,喜歡分開安裝,在這裡海芋來教大家如何分開安裝來配置。

 

 

◎◎軟體小檔案◎◎
軟體名稱:Android SDK
軟體版本:24.0.2
軟體介面:英文
軟體性質:免費軟體
支援系統:MAC OS / Windows / Linux
Win版下載:http://forum.jeasy.info/viewtopic.php?f=61&t=1578
Mac版下載:http://forum.jeasy.info/viewtopic.php?f=62&t=1579
Linux版下載:http://forum.jeasy.info/viewtopic.php?f=186&t=2019
官方網站:http://developer.android.com/sdk/index.html

 

Step 1.
首先,先安裝好 「JAVA SDK」 後 (Mac OS 有內建 JAVA SDK),再去「Android SDK」下載這一個軟體,下載前請先按下「DOWNLOAD FOR OTHER PLATFORMS」。

Continue reading

[Android 開發] This message is already in use 解法

Handler 和 Message 是 Android 用來更新畫面的重要方法,有在開發 Android 的朋友都應該要知道這兩個的用法。而海芋最近使用這個方法來開發程式時,碰到了「android.util.AndroidRuntimeException: This message is already in use」這個問題,這是原本的寫法。

private int MSG_INCREASE_PROGRESSBAR = 9527;
private int MSG_Done = 5566;
private ProgressDialog m_progressDialog = null;

private Runnable m_runnable = new Runnable(){
  @Override
  public void run() {
    try {
      Message msg = new Message();
      for (int i = 0; i < 100; i++){
        msg.what = MSG_INCREASE_PROGRESSBAR;
        m_Handler.sendMessage(msg);
      }
 
      msg.what = MSG_Done;
      m_Handler.sendMessage(msg);
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  } 
};

private Handler m_Handler = new Handler(){
  @Override
  public void handleMessage(Message msg) {
    super.handleMessage(msg);
    switch (msg.what){
      case MSG_INCREASE_PROGRESSBAR:
        if (m_progressDialog != null)
          m_progressDialog.incrementProgressBy(1);
        break;
      case MSG_DelteDone:
        if (m_progressDialog != null){
          m_progressDialog.dismiss(); 
          m_progressDialog = null; 
        }
    } 
  } 
};

 

Continue reading

如何設定 Java 列舉值 (enum) 為字串 (String)?

在程式的開發上,列舉是一個很常用的功能,不管是任何程式語言,都常常用到列舉的方式來存取值,以讓程式更簡單易懂。而海芋最近在 Android 的開發上,需要將以字串當做列舉的值,並加以存取,在查了一下資料後,終於找出怎麼做了,於是分享給大家。

 

就讓我們直接看程式碼吧!以下是程式碼的部份。

/**
* 顏色定義
* */
public enum Colors{
  HEX_GREEN_COLOR("0f0"),
  HEX_RED_COLOR("f00"),
  HEX_BLUE_COLOR("00f"),
  
  private final String value;
  private Colors(String s) {
   value = s;
  }
  
  public String toString(){
   return value;
  }
}

 

Continue reading

[Android 開發] DatePickerDialog 日期選擇對話框的使用

在 Android 的開發上,讓使用者選擇日期是一件很常做的事期, Android 內其實內建日期選擇工具 DatePickerDialog ,只要透過這個對話框,就可以讓使用者快速設定日期,如果你是 Android 的開發者,那麼這個工具一定不可以錯過。

 

假設,我們有一個 Android 的 EditText ,當我們按下這個 EditText 時,就希望跳出日期選擇工具,讓使用者設定日期,該怎麼做呢?首先,我們當然要刻 EditText 啦,如下的範例。

<EditText
android:id="@+id/edit_birthday"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:inputType="date"
android:singleLine="true" />

Continue reading

[Android 開發] 如何檢查輸入的文字是否為 Email 格式?

 

在 Android 的開發上,我們通常會使用 EditText 來輸入文字,而如果今天我們有一個欄位需要使用者來填寫 Email,並且驗證使用者所填的資料是否正確,那麼該怎麼做呢?其實很簡單,只要下面兩個步驟,就可以驗證使用者輸入的文字是否為 Email 格式了。

 

首先,我們在 XML 中要先進行限制,讓使用者只能輸入 Email 格式所可以接受的字元。

<EditText
   android:id="@+id/edittext_email"
   android:singleLine="true"
   android:inputType="textEmailAddress" />

 

 

接下來,再於程式進行判斷即可。

private boolean isVaildEmailFormat()
{
    EditText etMail = (EditText)   findViewById(R.id.edittext_email);
    if (etMail == null)
        return false;
    return android.util.Patterns.EMAIL_ADDRESS.matcher(_edittext.getText().toString()).matches();
}

 

如果要搜尋,可以搜尋關鍵字「android check email format」或是「android validate an e-mail address」這兩個關鍵字,就可以找到一堆資料了唷!

[Android 開發] 如何在 MAC OS 中建立 KeyStore?

一般在開發 Android APP 時,如果沒有特別指定,會採用 debugkey 來幫程式做加簽的動作。然而在上架至 Google Play 時, Google 則是會請你先使用自己的簽署檔案 (KeyStore),這樣才會知道 APP 是由誰開發的。而如何在 MAC OS 中建立一個專屬的簽署檔案呢?其實只要一個簡單的指令就可以啦!

 

首先,先打開終端機,之後輸入以下的程式碼,以及建立 KeyStore 所需的資料就可以了。

$ keytool -genkey -v -keystore drivesample.keystore -alias drivesample 
-keyalg RSA -keysize 2048 -validity 10000

 

最後,請把「drivesample」換成你自己的 app 名稱,至於 10000 則是這個 keystore 的有效天數,如果寫成 365,則代表這個 keystore 一年內有效。

 

如果要搜尋關鍵字,可以搜尋「how to create keystore in mac」或者「How To Generate A Key For Your Android App on a Mac」這兩個關鍵字唷!

[Android 開發] 如何在利用 TextView 做左右滾動的文字跑馬燈?

一般我們做跑馬燈,都是使用 WebView 來實做,但是 WebView 的效能並不好,而其實 TextView 就有內建跑馬燈的功能了,但不好控制,所以還是自己寫程式碼來控制是最好的,接下來就讓我們看一下怎麼做吧!

而這篇文章是參考「自定义TextView跑马灯效果,可控制启动,停止,和速度(含源码)」一文改的,主要是原文在特定的情況下會有殘影產生,所以海芋加以改寫,程式碼如下:

public class MarqueeTextView extends TextView implements Runnable 
{
    public enum MarqueeDirection 
    {
        LEFT, RIGHT
    } 
    private volatile boolean  m_bIsStop = false;
    private int      m_iTextWidth = 0;// 文字寬度
    private boolean  m_bIsMeasure = false;
    private int      m_iDistance = 1;      
    private int      m_iSpeed = 25;      
    private int      m_iScrollPosition = 0;
    private MarqueeDirection m_Direction = MarqueeDirection.RIGHT;

   public MarqueeTextView(Context context)
   {
       super(context);
       setEllipsize(TruncateAt.MARQUEE);
       setSingleLine(true);
       onResume();
   }

   @Override
   protected void onDraw(Canvas canvas)
   {
       if (!m_bIsMeasure)
       { // 文字寬度只要獲取一次就好啦!
              getTextWidth();
              startScroolFrom0();
              m_bIsMeasure = true;
       }
      super.onDraw(canvas); // 先設定好再畫,才不會有殘影
   }

   public void onResume()
   {
      startScroll();
   }

   public void onPause()
   {
      stopScroll();
   }

   private void getTextWidth()
   {
      Paint paint = getPaint();
      String str = getText().toString();
      m_iTextWidth = (int) paint.measureText(str);
   }

   protected void startScroolFrom0()
   { // 跑馬燈初始值方向
      if (m_Direction == MarqueeDirection.RIGHT)
         m_iScrollPosition = -getWidth();
      else
         m_iScrollPosition = m_iTextWidth;

      scrollTo(m_iScrollPosition, 0);
   }

   @Override
   public void run()
   {
      if (m_bIsStop)
         return;

      // 跑馬燈初始值方向
      if (m_Direction == MarqueeDirection.RIGHT)
         m_iScrollPosition += m_iDistance;
      else
         m_iScrollPosition -= m_iDistance;
      scrollTo(m_iScrollPosition,0);
      if ((m_Direction == MarqueeDirection.RIGHT && getScrollX() >= m_iTextWidth) || // 由右向左捲
         (m_Direction == MarqueeDirection.LEFT &&  getScrollX() <= -getWidth())) // 由左向右捲
      {
         startScroolFrom0();
      }
      postDelayed(this, m_iSpeed);
   }

   private void startScroll()
   {
      m_bIsStop = false;
      removeCallbacks(this);
      post(this);
   }

   private void stopScroll()
   {
      m_bIsStop = true;
      removeCallbacks(this);
   }
}

 

而以上如果你是程式設計師的話,應該會有一點小幫助,如果不是程式設計師,就略過這篇文章吧!

[免費] Subclipse ~ 讓 Eclipse 也有 SVN 的功能,取代 TortoiseSVN, MAC、Windows 可用

TortoiseSVN」是業界常用的程式碼同步工具,不過這個工具在 MAC 中卻不可使用,所以,如果是 Android 的工程師,在 MAC 中想要同步自己的程式,就得尋找替代方案了!一個很簡單的方法就是在 Eclipse 中安裝「Subclipse」這個外掛程式了,這個外掛程式使用的方式跟「TortoiseSVN」非常雷同,而且操作起來相當容易,是一個海芋覺得還蠻推薦的開發工具!

 

 

◎◎軟體小檔案◎◎
軟體名稱:Subclipse
軟體介面:中文
軟體版本:1.1.10
軟體性質:Freeware
支援系統:Windows / MAC,需有要 Eclipse 這個工具
官方網站:http://subclipse.tigris.org/

Step1.
打開 Eclipse 後,按下【Help】→【Install New Software】,按下【Add】後,在 「Location」 輸入「http://subclipse.tigris.org/update_1.10.x」,在「Name」輸入「Subclipse」來安裝這軟體。

Continue reading

[Android 開發] 如何啟動 Android SDK Manager,安裝多種版本 SDK,並且建立 AVD ?

由於 Android 的版本釋出速度很快,在 Android 開發實務上,最重要的就是考慮到手機的版本,如果使用比較高的版本開發,在比較低的版本則不一定能使用,所以要怎麼辦呢?最重要的就是安裝多種版本的 SDK 來做開發,並且使用不同解析度的 Android 虛擬機器 (Android Virtual Device, AVD) 來多做測試囉!

在介紹這篇文章之前,海芋跟大家複習一下兩種建立 Android 開發環境的模式,若不知道的朋友可以先參閱一下。

如果是使用「手動配置」的朋友,相信在海芋的「手動配置開發環境」的教學文中,都已經知道如何安裝不同的 SDK 和建立 AVD 了,至於 ADT Bundle 則有所不同,以下就以 Windows 版的 ADT Bundle  為例,來介紹如何安裝多種版本 SDK,並且建立 AVD!

 

◎◎軟體小檔案◎◎
軟體名稱:ADT Bundle
軟體介面:英
軟體性質:免費軟體
支援系統:MAC OS / Windows / Linux
■ Win版下載:http://forum.jeasy.info/viewtopic.php?f=61&t=1521
■ Mac版下載:http://forum.jeasy.info/viewtopic.php?f=62&t=1522
官方網站:http://developer.android.com/sdk/index.html

Step 1.
下載最新的 ADT Bundle 後,並且解壓縮,而新版的 ADT Bundle 將 SDK Manager 獨立成一隻程式,點兩下來執行它!

Continue reading