android 布局分为LinearLayout TableLayout RelativeLayout FreamLayout AbsoluteLayout.
常用的有LinearLayout,TableLayout,RelativeLayout ,这几个布局不会应该手机屏幕大小而有变化。通常我们使用HVGA 大小的屏幕(320*480).
接下来我们学习RelativeLayout.
原文引入找不到了。这里记录一下。
看一下效果图吧。
还有两个常用组件的图片。
main.xml代码如果
<?xml version="1.0" encoding="utf-8"?>
<!-- 相对布局 一个控件相对于另一个控件或者容器的位置。 -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/describe_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textColor="#556055"
/>
<!-- 这个TextView相对于上一个TextView 在 它的下方所以设置属性为layout_below-->
<TextView
android:id="@+id/username_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/username"
android:textColor="#556055"
android:layout_below="@id/describe_view"
/>
<EditText
android:id="@+id/username_edit"
android:layout_width="90dp"
android:layout_height="40dp"
android:layout_marginTop="4dp"
android:layout_toRightOf="@id/username_view"
android:layout_below="@id/describe_view"
/>
<TextView
android:id="@+id/sex_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/sex"
android:textColor="#556055"
android:layout_below="@id/describe_view"
android:layout_toRightOf="@id/username_edit"
/>
<RadioGroup
android:id="@+id/sex_radiogroup"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/sex_view"
android:layout_below="@id/describe_view"
>
<!--第一个RadioButton -->
<RadioButton
android:id="@+id/male_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"
/>
<!--第二个RadioButton -->
<RadioButton
android:id="@+id/woman_radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
/>
</RadioGroup>
<TextView
android:id="@+id/age_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="25dp"
android:text="@string/age"
android:textColor="#556055"
android:layout_below="@id/username_view"
/>
<EditText
android:id="@+id/brithday_edit"
android:layout_width="90dp"
android:layout_height="40dp"
android:layout_marginTop="4dp"
android:hint="@string/selectdate"
android:textSize="13sp"
android:gravity="center"
android:editable="false"
android:layout_toRightOf="@id/age_view"
android:layout_below="@id/username_edit"
/>
<TextView
android:id="@+id/education_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="25dp"
android:text="@string/education"
android:textColor="#556055"
android:layout_below="@id/sex_view"
android:layout_toRightOf="@id/brithday_edit"
/>
<!-- 下拉列表控件 -->
<Spinner
android:id="@+id/edu_spinner"
android:layout_width="108dp"
android:layout_height="38dp"
android:prompt="@string/prompt"
android:entries="@array/entries"
android:layout_below="@id/sex_radiogroup"
android:layout_toRightOf="@id/education_view"
/>
<TextView
android:id="@+id/interest_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="25dp"
android:text="@string/interest"
android:textColor="#556055"
android:layout_below="@id/age_view"
/>
<!-- 复选框控件 -->
<CheckBox
android:id="@+id/car_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/car"
android:textColor="#566156"
android:layout_toRightOf="@id/interest_view"
android:layout_below="@id/brithday_edit"
/>
<CheckBox
android:id="@+id/sing_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="11dp"
android:text="@string/sing"
android:textColor="#566156"
android:layout_toRightOf="@id/car_check"
android:layout_below="@id/brithday_edit"
/>
<CheckBox
android:id="@+id/movie_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="11dp"
android:text="@string/movie"
android:textColor="#566156"
android:layout_toRightOf="@id/sing_check"
android:layout_below="@id/brithday_edit"
/>
<Button
android:layout_width="100dp"
android:layout_height="40dp"
android:text="@string/notify"
android:id="@+id/notity"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_below="@+id/sing_check"
/>
<Button
android:id="@+id/submit_button"
android:layout_width="100dp"
android:layout_height="40dp"
android:text="@string/submit"
android:gravity="center"
android:layout_below="@id/movie_check"
android:layout_marginLeft="210dp"
android:layout_marginTop="15dp"
/>
</RelativeLayout>
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, LayoutDemoActivity!</string>
<string name="app_name">LayoutDemo</string>
<string name="username">用 户:</string>
<string name="sex">性别:</string>
<string name="selectdate">出生日期</string>
<string name="education">学历:</string>
<string name="interest">爱 好:</string>
<string name="age">年 龄:</string>
<string name="car">汽车</string>
<string name="sing">唱歌</string>
<string name="movie">电影</string>
<string name="submit">提交</string>
<string name="prompt">学历</string>
<string-array name="entries">
<item>本科</item>
<item>专科</item>
<item>研究生</item>
<item>硕士</item>
<item>博士</item>
</string-array>
<string name="notify">通知</string>
<string name="content">
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。 2010年末数据显示,仅正式推出两年的操作系统的Android已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智能手机平台。Android的主要竞争对手是苹果的IOS,微软的WP7以及RIM的Blackberry OS。
</string>
</resources>
又下主要代码的实现,有一个通知的代码。
package com.hkrt.action;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;
public class LayoutDemoActivity extends Activity {
private EditText brithdayEditText = null;
EditText userName;
RadioButton male;
RadioButton woman;
Spinner sEducation;
String sex=null;
CheckBox car,sing,movie;//爱好
StringBuffer hobby = new StringBuffer();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
brithdayEditText =(EditText) this.findViewById(R.id.brithday_edit);
brithdayEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
new DatePickerDialog(LayoutDemoActivity.this,new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
brithdayEditText.setText(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);
}
},c.get(Calendar.YEAR),c.get(Calendar.MONTH),c.get(Calendar.DAY_OF_MONTH)).show();
}
});
userName =(EditText)this.findViewById(R.id.username_edit);
male =(RadioButton)this.findViewById(R.id.male_radiobutton);
woman =(RadioButton)this.findViewById(R.id.woman_radiobutton);
sEducation =(Spinner)this.findViewById(R.id.edu_spinner);
car = (CheckBox)this.findViewById(R.id.car_check);
sing =(CheckBox) this.findViewById(R.id.sing_check);
movie = (CheckBox)this.findViewById(R.id.movie_check);
Button buttonSub = (Button)this.findViewById(R.id.submit_button);
buttonSub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(userName.getText().toString().trim().length()==0){
Toast toast = Toast.makeText(getApplicationContext(), "用户名不能为空", 0);
toast.setGravity(Gravity.CENTER, 0, 0);
View toastView = toast.getView();
ImageView image = new ImageView(LayoutDemoActivity.this);
image.setImageResource(R.drawable.icon1);
LinearLayout ll = new LinearLayout(LayoutDemoActivity.this);
ll.addView(image);
ll.addView(toastView);
toast.setView(ll);
toast.show();
}else{
if(male!=null){
sex=male.getText().toString();
}else{
sex=woman.getText().toString();
}
if(car.isChecked()){
hobby.append(car.getText()).append("|");
} if(sing.isChecked()){
hobby.append(sing.getText()).append("|");
} if(movie.isChecked()){
hobby.append(movie.getText());
}
Toast.makeText(getApplicationContext(), userName.getText() +""+ sex+""+ brithdayEditText.getText()+""+sEducation.getSelectedItem().toString()+""+hobby.toString(), 0).show();
System.out.println("结果"+userName.getText() +""+ sex+""+ brithdayEditText.getText()+""+sEducation.getSelectedItem().toString()+""+hobby.toString());
}
}
});
/**通知的demo示例*/
Button notityBut = (Button)this.findViewById(R.id.notity);
notityBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(LayoutDemoActivity.this,OtherActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(LayoutDemoActivity.this, 0, intent, 0);
Notification notify = new Notification();
notify.icon=R.drawable.icon1;
//notify.sound=Uri.parse("file:///sdcard/Crazy.mp3");
notify.tickerText="启动otherActivity通知";
notify.when=System.currentTimeMillis();
notify.defaults=Notification.DEFAULT_SOUND;
notify.defaults=Notification.DEFAULT_ALL;
notify.setLatestEventInfo(LayoutDemoActivity.this, "普通通知", "点击查看", contentIntent);
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.notify(0, notify);
}
});
}
}
注:通知是打开另一个activity,