編輯:關於Android編程
Activity作為android系統的表現層組件有著至關重要的地位,因為他直接和用戶接觸。一個Activity在被創建和銷毀的過程中經歷了7個過程,他們分別是oncreat(activity創建後第一個被調用的函數),onstart(當activity顯示在界面上的時候被調用),onrestart(從停止到活動調用),onresume(能夠和用戶進行交互的時候調用),onpause(進入暫停態的時候被調用),onstop(進入停止態的時候被調用),ondestroy(進入非活動狀態前被調用)。
假如說我們要在某個activity載入的時候做一些工作,那我們可以重載他的oncreat函數,像下面這樣:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); baseSetContentView(R.layout.login_activity_layout); initHttpHandler(); initView(); }
上面的initHttpHandler()和initView()是我們加上去的,這樣系統在創建這個activity的時候就會調用他們。
安卓的界面資源用xml語言描述,xml語言很適合用來組織 key-value 形式的數據。界面資源說白了也就是一堆描述性的文件,比如:界面元素的名字,大小,位置等等。我們要想在程序裡面更該或者是獲取界面元素就得做一些初始化的工作,也就是給這些元素取一些別名。比如像下面這樣的:
ImageButton logbutton=(ImageButton)findViewById(R.id.imageButton1);
我們在程序裡面定義一個叫logbutton的對象,實際上就是對界面資源裡面的登錄按鈕做了引用。這樣我們就能在程序裡面通過logbutton對象來操作登錄按鈕。
注意,定義這個對象要在 setContentView(R.layout.activity_main) 之後。
這裡還有值得熟悉的是安卓常用的界面設計基礎知識,因為我們常要適應不同屏幕尺寸的手機所以在界面布局方面為了兼顧美觀和適應性一般采用相對布局方案。
Android RelativeLayout 屬性
// 相對於給定ID控件
android:layout_above 將該控件的底部置於給定ID的控件之上;
android:layout_below 將該控件的底部置於給定ID的控件之下;
android:layout_toLeftOf 將該控件的右邊緣與給定ID的控件左邊緣對齊;
android:layout_toRightOf 將該控件的左邊緣與給定ID的控件右邊緣對齊;
android:layout_alignBaseline 將該控件的baseline與給定ID的baseline對齊;
android:layout_alignTop 將該控件的頂部邊緣與給定ID的頂部邊緣對齊;
android:layout_alignBottom 將該控件的底部邊緣與給定ID的底部邊緣對齊;
android:layout_alignLeft 將該控件的左邊緣與給定ID的左邊緣對齊;
android:layout_alignRight 將該控件的右邊緣與給定ID的右邊緣對齊;
// 相對於父組件
android:layout_alignParentTop 如果為true,將該控件的頂部與其父控件的頂部對齊;
android:layout_alignParentBottom 如果為true,將該控件的底部與其父控件的底部對齊;
android:layout_alignParentLeft 如果為true,將該控件的左部與其父控件的左部對齊;
android:layout_alignParentRight 如果為true,將該控件的右部與其父控件的右部對齊;
// 居中
android:layout_centerHorizontal 如果為true,將該控件的置於水平居中;
android:layout_centerVertical 如果為true,將該控件的置於垂直居中;
android:layout_centerInParent 如果為true,將該控件的置於父控件的中央;
// 指定移動像素
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值;
example:
android:layout_below = "@id/***"
android:layout_alignBaseline = "@id/***"
android:layout_alignParentTop = true
android:layout_marginLeft = “10px”
為了監聽用戶的動作,我們必須注冊監聽函數。常用的監聽函數有 setOnClickListener()setOnFocusChangeListener() addTextChangedListener() 以及觸摸事件。
監聽注冊有好幾種寫法,這裡推薦一種統一處理函數的寫法。即實現相應Listener的接口,注冊控件的事件,重載裡面的響應事件。比如說buttom的onclick()函數。
public class MainActivity extends ActionBarActivity implements OnClickListener
實現接口
Button log_button=(Button)findViewById(R.id.button1); log_button.setOnClickListener(this);
注冊事件
@Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "log", Toast.LENGTH_LONG).show(); Intent intent=new Intent(MainActivity.this,MenuActivity.class); startActivity(intent); }
重載事件
界面之間的跳轉是app中非常重要的環節,通過intent機制從一個activity啟動另一個activity很簡單,代碼如下:
Intent intent=new Intent(MainActivity.this,MenuActivity.class); startActivity(intent);
這是顯式啟動一個activity,還有隱式啟動,子啟動。
【5】handle消息機制
handle消息機制是安卓裡面重要的進程間通信的方式,通過handle我們可以輕松的發送消息給指定的目標。
發送方:
Message msg = handler.obtainMessage(); msg.what = MessageCode.RESIZE; msg.arg1 = change; msg.sendToTarget();
接收方需要重載handleMessage函數
//接受處理信息函數 @Override public void handleMessage(Message message) { LoginActivity theActivity = mActivity.get(); if(theActivity == null) return; //接收到登錄消息 if(message.what == MessageCode.LOGIN)
【6】數據的存儲
安卓存儲數據有5種方式,他們分別是:
1 使用SharedPreferences存儲數據
2 文件存儲數據
3 SQLite數據庫存儲數據
4 使用ContentProvider存儲數據
5 網絡存儲數據
其中SharedPreferences是Android平台上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,一般在Activity中 重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常規的Long長 整形、Int整形、String字符串型的保存。 它是什麼樣的處理方式呢? SharedPreferences類似過去Windows系統上的ini配置文件,但是它分為多種權限,可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,對於常規的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。xml 處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對於內存資源占用比較好。它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。
實現SharedPreferences存儲的步驟如下:
1 據Context獲取SharedPreferences對象
2 edit()方法獲取Editor對象。
3 Editor對象存儲key-value鍵值對數據。
4 commit()方法提交數據。
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //獲取SharedPreferences對象 Context ctx = MainActivity.this; SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE); //存入數據 Editor editor = sp.edit(); editor.putString("STRING_KEY", "string"); editor.putInt("INT_KEY", 0); editor.putBoolean("BOOLEAN_KEY", true); editor.commit(); //返回STRING_KEY的值 Log.d("SP", sp.getString("STRING_KEY", "none")); //如果NOT_EXIST不存在,則返回值為"none" Log.d("SP", sp.getString("NOT_EXIST", "none")); } }
ES文件浏覽器怎麼添加其他雲。ES文件浏覽器是一個能管理手機本地、局域網共享、FTP和藍牙文件的管理器。他有自己的個人雲,那我想添加其他的雲,怎麼辦呢?是不
本文目標實現控制小飛機的左右移動、躲避子彈、打boss。本節實現 開始菜單界面1、首先 資源文件拷過來2、劃分游戲狀態 public static final int G
onReceiveError是WebViewClient提供的方法,用於網頁產生錯誤時進行回調處理。1. 舊版的onReceiveError在API23之前,該方法的簽名
一、Fragment簡介Fragment介紹針對屏幕尺寸的差距,很多情況下,都是先針對手機開發一套app,然後拷貝一份,修改布局以適應什麼超級大屏的。Fragment的初