嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

周梦康 发表于 2014-04-13 2970 次浏览 标签 : Android

嗯,作为个屌丝宅,周五下载了Marschen的Android的第一季视频教程。花了一天半看完,和自己的web开发做一个对比的思考,做点笔记。也都是些自己的观点,不一定正确。

Marschen第一季的视频里呢,以Android的UI功能方面的讲解为主。这就有点类似与我们在做PHP开发的时候先要学习html+css。而且大体思路也是一样。

Web的界面以html来展现,Android的UI以XML来展示,所有的属性都现在XML里。

Android里面的线性布局(LinearLayout)类似于HTML里面的table,Android里面的相对布局(RelativeLayout)则有点类似于html里面的div。

Web开发虽然用table来布局可以实现,但是所有的开发人员都知道这个不可取,我知道的原因是对搜索引擎不友好,Android里面不推荐线性布局的原因是其加载的过程会消耗很大的资源。

Android里面的各个控件也可以设置padding,margin。因为要实现一些排版,想必大家都能想到,这些定位的属性值不可少。视频里讲了不少属性,我想暂时不用全都把它们记得滚瓜乱熟吧,需要用的时候查下手册即可。

Marschen在视频不仅讲到了UI的布局,也把各个控件的使用都加以详细的说明,比如点击按钮触发什么,滚动滚动条触发什么,修改时间触发什么。这就有点类似于我们Web开发里面的前端里面的javascript的事件触发功能。在Marschen的教程里面都成为事件监听,这样也更符合Listener的含义。

而在第一季的视频里呢,所有的事件监听都是一个套路:

根据ID获取控件元素,增加一个监听事件的内部类,然后对这个控件元素绑定监听事件。

activity_main.xml里面添加一个Button控件为例

    <Button
        android:id="@+id/Button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_centerVertical="true"
        android:background="#bbbbbb"
        android:text="测试" />

然后编辑src/package/path/MainActivity.java

首先声明一个指定类型的私有的成员变量(以一个按钮为例)

private Button button;

这里需要做一个Button包的导入,快捷键(windows上是ctrl+shift+o,mac上command+shift+o),导入成功之后会多一行import android.widget.Button;

然后在MainActivity类里面增加一个OnButtonClickListener的内部类,而这个OnClickListener是实现了OnClickListener的接口,在实现这个接口的时候,也需要导包,由于有很多OnClickListener,这里我们需要做导入视图包里面的OnClickListener,导入成功之后会多一行import android.view.View.OnClickListener;

class OnButtonClickListener implements OnClickListener{
//...
}

然后在OnButtonClickListener类里面重写(实现)onClick方法

    class OnButtonClickListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			System.out.println("按钮被点击");
		}
    	
    }

然后在onCreate方法里面实现对按钮的事件监听的绑定

button = (Button)findViewById(R.id.Button01);
button.setOnClickListener(new OnButtonClickListener());

所有的代码如下

package mengkang.zmk;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button button;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button)findViewById(R.id.Button01);
        button.setOnClickListener(new OnButtonClickListener());
    }
    class OnButtonClickListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			System.out.println("按钮被点击");
		}
    	
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表

回复 beiwei48 2014-04-13 12:30:59
不错,go on!
回复 梦康 2014-04-13 13:16:16
回复1楼: 哈哈哈,最近可能要搞android的开发,所以先看看。