Android开发实战之与JAVA开发对比

        随着移动互联网以及互联网+的逐步走俏,越来越多的企业开始进入移动互联网,想通过互联网分一杯羹,但是移动互联网开发成本还是很高的,比如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;
	}

	@Override
	protected 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));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public 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")
	@Override
	public 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的外围添加上即可。

总结的很多,要写的也很多,因为工作原因,时间不是很多,今天就写到这里,明天还会继续完善,每天并不是简简单单完成任务,而是要通过工作的实际需求来

提高自己,所以要坚持写总结,将自己总结的经验分享给大家,同时也给自己留有备份,以备不时之需,同时当你真正写出来的时候,你才真是进行了相应的归纳总结

你才真正的进步,写得不好,刚刚入门,有不对的地方还希望牛人多多指点。



























郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。