標籤:android java android開發 application 移動互連網
隨著移動互連網以及互連網+的逐步走俏,越來越多的企業開始進入移動互連網,想通過互連網分一杯羹,但是移動互連網開發成本還是很高的,比如iphone開發的審核機制漫長,可能無法滿足快速的部署應用,而且開發人員相對較少,而中觀中國移動之開發隊伍,可以用十之八九都是android麾下,所以,為了快速融入互連網+的潮流,選擇一個開發人員多,資源豐富,門檻低的開發平台才是明智之選,綜上,我選擇了Android作為進入移動平台的開發語言,那麼說回來了,Android是基於JAVA進行開發的,那麼針對於JAVA開發人員,Android又與Java開發有什麼不同之處呢?是不是會JAVA開發就會安卓開發了呢?那麼戴著這些問題,我們來進入Android的世界。。。。
如果要對比Android和Java的區別,我們通過幾個簡單的例子來說起,我們通過一個簡單的應用來介紹他們的關係,今日頭條大家可能都不陌生,救我個人而言,我特別喜歡這個軟體,我並不是在給這個軟體做廣告,確實是不錯,很實用,也很適合我們拿來做例子學習人家的優秀設計,好了開始,如下是我弄的簡單的效果,就是為了,讓大家瞭解我接下來要幹什嗎?
看看是不是很像,上面的導航條可以左右滑動,下面的列表單擊後會有提示效果,這就是我們今天要距離說明的內容,好了,開始上代碼。
下面第一段代碼是啟動並執行入口Activity也就是我們常說的首頁面。
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TabHost;public class MainActivity extends ActionBarActivity {private String aaa = "ceasdasd";private ListView ListView = null;public String getAaa() {return aaa;}public void setAaa(String aaa) {this.aaa = aaa;}public ListView getListView() {return ListView;}public void setListView(ListView listView) {ListView = listView;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initTabHost();initListView();}public void initTabHost() {TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);tabHost.setup();tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("頭條").setContent(R.id.listView1));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("推薦").setContent(R.id.view2));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("瀋陽").setContent(R.id.view3));tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator("社會").setContent(R.id.view4));tabHost.addTab(tabHost.newTabSpec("tab5").setIndicator("娛樂").setContent(R.id.view5));tabHost.addTab(tabHost.newTabSpec("tab6").setIndicator("科技").setContent(R.id.view6));}public void initListView() {this.ListView = (ListView) findViewById(R.id.listView1);SimpleAdapter adapter = new SimpleAdapter(this, getData(),R.layout.simple_list, new String[] { "title" },new int[] { R.id.textView1 });this.ListView.setAdapter(adapter);this.ListView.setOnItemClickListener(new ListItemOnClickListenerImp(this));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}private List<Map<String, Object>> getData() {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> map = new HashMap<String, Object>();map.put("title", "摩托羅拉");list.add(map);map = new HashMap<String, Object>();map.put("title", "諾基亞");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);map = new HashMap<String, Object>();map.put("title", "三星");list.add(map);return list;}}接下來這一段代碼是我單獨寫的一個事件類別,為了代碼的可讀性,以及代碼的結構性,和接下來要說的java使用方法是相結合的。
import java.util.Map;import android.app.AlertDialog;import android.app.Dialog;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;public class ListItemOnClickListenerImp implements OnItemClickListener {private MainActivity mainActivity;public ListItemOnClickListenerImp(MainActivity superMainActivity) {this.mainActivity = superMainActivity;}@SuppressWarnings("unchecked")@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {Map<String, Object> map_obj=(Map<String, Object>) this.mainActivity.getListView().getItemAtPosition(arg2);Dialog alertDialog = new AlertDialog.Builder(this.mainActivity).setTitle("Message").setMessage(map_obj.get("title").toString()).setCancelable(true).create();alertDialog.show();}}好了,現在開始說說研究結果,就是我們學到了什嗎?仔細看兩段代碼,是不是很熟悉,優雅的java代碼,物件導向開發,繼承,事件該有的都有了,儼然就是java開發,
但是他又和javaEE和java案頭應用有很大的不同,他是為了適應移動而生,所以繼續看代碼,總結如下:
1,android中的所有對象都可以通過findViewById(id)來擷取,但是自訂的控制項,不是安卓自動實現的情況下,Id的擷取方式如下:android.R.ID.對象ID。
2,單獨寫得事件類別需要傳入的主Activity需要通過構造方法來傳入,這樣即可食用,其他主類的方法通過set和Get即可擷取到,跟普通的物件導向開發基本一致。
以上兩條是代碼的總結,下面這段代碼是頁面配置檔案的說明:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:ignore="MergeRootFrame" > <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <HorizontalScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="none" > <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabWidget> </HorizontalScrollView> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> <TableLayout android:id="@+id/view2" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:id="@+id/tableRow2" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:text="密碼" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按鈕2" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按鈕1" /> </TableRow> </TableLayout> <TextView android:id="@+id/view3" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:id="@+id/view4" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="diyige " /> <TextView android:id="@+id/view5" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:id="@+id/view6" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> </LinearLayout> </TabHost></FrameLayout>
要想實現tab過多的左右移動效果,需要藉助HorizontalScrollView來進行實現,我們只需要在TabWidget的外圍添加上即可。
總結的很多,要寫的也很多,因為工作原因,時間不是很多,今天就寫到這裡,明天還會繼續完善,每天並不是簡簡單單完成任務,而是要通過工作的實際需求來
提高自己,所以要堅持寫總結,將自己總結的經驗分享給大家,同時也給自己留有備份,以備不時之需,同時當你真正寫出來的時候,你才真是進行了相應的歸納總結
你才真正的進步,寫得不好,剛剛入門,有不對的地方還希望牛人多多指點。
Android開發實戰之與JAVA開發對比