Android應用之個人應用軟件開發(1) – Android移動開發技術文章_手機開發 Android移動開發教學課程

目前我個人做的是自己的一個理財軟件,我這個人是一個極度木有理財觀念的人,每個月沒有固定的開資計劃和理財計劃。於是乎我看瞭別的理財軟件也讓我覺得很繁瑣和復雜我覺得如果讓我來做一個理財軟件,那第一必須得方便,個性化,有可能我一鍵就能記錄我當天的開資情況(根據前一天的理財記錄來添加第二天的理財紀錄是否一樣)。而且是否每天都要統計開資呢,不一定,我隻紀錄我當天的花費即可,而且我可以編輯這個月內我某一天的開資情況,還有一個功能就是我忘瞭昨天的理財添加瞭,我選擇日期來進行理財管理。達到即使忘記瞭我也能添加回來。當然作為一個管理軟件我們沒有必要記得非常之精確,我們不是科學傢要進行精確的數值統計,我們隻記錄當月大概開資情況和,按照這個計劃這個月的開資的花費那一部分超出瞭我們預期的開資。比如我早上買瞭10個包子,包子的價錢1元,中午吃瞭20個包子,晚上吃瞭20個包子(當然我不是一直吃包子),我們就可以大致模糊理財。早餐10元,午餐20,晚餐20,是否有購買物品情況,必須生活消耗品開資(菜米油鹽醬醋茶等等)。好瞭不扣水勒。我直接把我需要的分為4大塊!

       根據以上需求理財功能分為4大塊:

       1,今日記賬(紀錄每一天的生活開資情況)

       2,本月日歷(這個月的日歷分佈)

       3,本月流水(本月開資消耗點柱狀圖)

       4,開資統計(一個月的預計開資 和 軟件紀錄的實際開資 比對情況)

       有瞭這4個功能那麼我就可以看出我這個月的錢都花到哪去瞭,下個月應該怎麼來理財,心裡有個數就行,軟件是死的,人是活的,我們還得每天按照自己的思想來活,活出精彩的每一天,哇哈哈。

UI設計:

       UI設計,我們提到過Android Layout Edior 佈局資源管理器。根據GOOGLE提供的人機接口我們可以方便的引用一些套件 Widget 這個非常成熟的套件,我覺得大致和silverlight / flax 等裡面的控件大致一樣的 ,還湯不換藥  一個按鈕是就是按鈕  它有事件 給我們提供服務 .

       首先我們新建一個工程,可以看到工程建立起來後已經給我們自動配置和引入瞭安卓開發必備的環境。

       當然我們也看到瞭androidManifest.xml配置文件。我們的程序的程序的入口點是main.xml ,那我們就來設計一下我們的界面吧.

       由於我想以後拓展成為公用軟件,那我就要設計一個登陸頁面,但這個頁面暫時沒有數據功能。但依然能達到我們登陸的效果,設計思路當然和傳統的一樣。設計之前簡單介紹一下android有哪幾種佈局方式:

       不同的佈局根據不同的屏幕適應性也是很重要的。android屏幕常用的有3種屏幕尺寸,這裡我也就說一種160的。

       desity=160 分辨率:320px * 533px 平均是3個點兩個分辨率  狀態欄 25px 25px  豎屏 320px * 508px

       1,表格佈局 tablelayout(自適應度中,和web裡面的tabel一樣的 行 和 列必須是對齊的)

       2 , 線性佈局 linearlayout(以行為線佈局,自適應高)

       3 , 相對佈局 Relativelayout(根據margin屬性進行相對佈局,適應度也是比較高的)

       4 , 絕對佈局 absolutelayout(根據直接定義絕對路徑坐標來設置 ,layout_x/y 來適應屏幕尺寸)

       5 , 框架佈局 Framelayout

       再來說一下drawable-*的3個目錄是幹什麼用的,存放瞭3中不同圖標的文件, hdpi:72*72 ; mdpi:48*48 ; ldpi:36 *36 這些尺寸自己設置好,在路徑中對於的圖片大小也是不一樣的,比如我們在任務欄看到的,和在應用版面上看到的是不同尺寸的道理是一樣的。

       接下來就是設計UI我瞭2中方式(linearlayout , absolutelayout)實現瞭如圖所示的佈局:

       具體實現大傢參考代碼吧

       有兩個窗體 一個是Mian.xml 另一個是 mylist.xml

     

 

 

      界面設計好瞭,接下來是做登陸的代碼瞭,在建立項目的時候選項:Create Activty 入口點Activityclass名 。我們看一下androidManifest.xml裡面的具體內容

 

      在ZisousoftminiActivity裡面書寫代碼內容:

      全文代碼:

    

package Zisou.Soft.mini;import android.app.Activity;import android.app.ProgressDialog;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class ZisousoftminiActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //調用main.xml layout窗體        setContentView(R.layout.main);        //目前就不用用戶名和密碼 等待以後拓展SQLite數據        final String str_username = "";        final String str_pwd = "";        //控件定義方法findViewById        final EditText Et_username = (EditText)findViewById(R.id.editText1);        final EditText Et_pwd = (EditText)findViewById(R.id.editText2);                Button bt_login = (Button)findViewById(R.id.button1);        //通過setOnClickListener來監聽並註冊OnClickListener時間方法        bt_login.setOnClickListener(new Button.OnClickListener() {                    public void onClick(View v) {              if(str_username.equals(Et_username.getText().toString().trim())==true)              {                  if(str_pwd.equals(Et_pwd.getText().toString().trim())==true)                  {                    final ProgressDialog progressDialog = ProgressDialog.show(ZisousoftminiActivity.this, "登陸中…", "請稍等,正在登陸…");                      final Handler handler = new Handler();                                        final Runnable callback = new Runnable() {                                      public void run() {                                                        //回調處理                              progressDialog.dismiss();//關閉對話窗口                              Intent intent = new Intent(ZisousoftminiActivity.this, mylist.class);//利用Intent創建一個窗口活動程序的動作                                              startActivity(intent);//切換該窗口mylist                          }                          };                      //聲明一個線程並處理回調                      Thread thread = new Thread() {                                          @Override                          public void run() {                              try {                                  Thread.sleep(5000);                              } catch (InterruptedException e) {                                  e.printStackTrace();                              }                              handler.post(callback);                          }                              };                      thread.start();                  }                  else                  {                      Toast.makeText( ZisousoftminiActivity.this , "密碼有誤", Toast.LENGTH_SHORT).show();                  }              }              else              {                  Toast.makeText( ZisousoftminiActivity.this , "用戶名錯誤", Toast.LENGTH_SHORT).show();              }            }        });    }}

            代碼中我們看到瞭這樣一段 setContentView(R.layout.main); 打開程序入口點的Activity窗體 , 通過setOnClickListener來監聽並註冊OnClickListener時間方法,使我們能書寫點擊按鈕之後的具體方法。其中聲明瞭 ProgressDialog類 會話窗口類 android SDK給我提供瞭5種類型,PopupWindosw 、Dialog 、AlertDialog 、ProgressDialog 、Toast 等我們用到瞭兩種。

            ProgressDialog的使用方法:

final ProgressDialog progressDialog = ProgressDialog.show(ZisousoftminiActivity.this, "登陸中…", "請稍等,正在登陸…");                      final Handler handler = new Handler();                                        final Runnable callback = new Runnable() {                                      public void run() {                              progressDialog.dismiss();                              Intent intent = new Intent(ZisousoftminiActivity.this, mylist.class);                              startActivity(intent);                          }                          };                                            Thread thread = new Thread() {                                          @Override                          public void run() {                              try {                                  Thread.sleep(5000);                              } catch (InterruptedException e) {                                  e.printStackTrace();                              }                              handler.post(callback);                          }                              };                      thread.start();
             Toast 的使用方法:

             要註意的是 ZisousoftminiActivity.this 指在當前的Activity中進行切換


Toast.makeText( ZisousoftminiActivity.this , "提示內容", Toast.LENGTH_SHORT).show();
             Intent是android Activity中重要的一個控制類 ,一個是對Action 的處理 一個是對 data to act on 的處理。

             在ZisousoftminiActivity裡面書寫代碼內容:

package Zisou.Soft.mini;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.AdapterView.OnItemClickListener;public class mylist extends Activity {        private Object[] actobj={            "個人理財管理",      myrmbmanage.class,            "個人日志",          myrizi.class,    };        public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.mylist);                //創建數組        CharSequence[] list = new CharSequence[actobj.length/2];        //序列化list        for(int i = 0 ; i <list.length; i++)        {            list[i]=(String)actobj[i*2];        }        //BindListView提取數組出來綁定Text內容值        ArrayAdapter<CharSequence> adp = new ArrayAdapter<CharSequence>(mylist.this, android.R.layout.simple_list_item_1 ,list);        ListView lv = (ListView)findViewById(R.id.ListView01);        lv.setAdapter(adp);        //setOnItemClickListener為每一個Itme設置OnItemClickListener事件        lv.setOnItemClickListener(new OnItemClickListener() {                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                    //創建List動作                Intent intent = new Intent(mylist.this, (Class<?>)actobj[position * 2 + 1]);                startActivity(intent);            }                });        }}

             程序寫完瞭跑一下看看是不是我們想要的功能:

           

 

   

 

         嗯,看來大體的UI設計工作已經到位瞭。感覺還是很不錯的,下一部分我將會繼續努力,寫接下來的個人理財管理裡面的UI,和功能說明!

         希望和大傢一起學習安卓開發和相關應用開發。後面會我會用到一個設計模式來寫這個程序。主要是用於數據庫訪問類庫方面的。

發佈留言