RelativeLayout(相对布局)
相对的前提是要有参照物。
先给要做为参照物的控件起一个id
android:id="@+id/btn1"
在某个控件的右边
android:layout_toRightOf="@id/btn1"
在某个控件的左边
android:layout_toLeftOf="@id/btn1"
在某个控件的下边
android:layout_below="@id/btn1"
在某个控件的下边
android:layout_above="@id/btn1"
在父控件的正中心
android:layout_centerInParent=“true”
在父控件的水平中心
android:layout_centerHorizontal=“true”
在父控件的竖直中心
android:layout_centerVertical=“true”
对齐顶部
android:layout_alignTop="@id/btn1"
对齐底部
android:layout_alignBottom="@id/btn1"
对齐右边
android:layout_alignRight="@id/btn1"
对齐左边
android:layout_alignLeft="@id/btn1"
对齐父控件的右边
android:layout_alignParentRight=“true”
对齐父控件的左边
android:layout_alignParentLeft=“true”
对齐父控件的底边
android:layout_alignParentBottom=“true”
对齐父控件的顶部
android:layout_alignParentTop=“true”
【注意事项】
【比例划分】
LinearLayout可以用于比例划分
【嵌套】
布局可以嵌套,子布局相对父布局而言,也是一个子控件。
竖着排两个国旗分别是法国、德国
【常用控件】
一、文本显示控件TextView
设置文字
android:text="@string/hello_world"
设置超链接
android:autoLink=“web”
设置文字大小
android:textColor="#FF0000"
设置文字风格
android:textStyle=“bold|italic”
设置文字的重力方向
android:gravity=“center”
二、按钮Button
https://developer.android.google.cn/docs
Button是TextView的子类,拥有TextView的绝大多数性质。
并且有一些功能上的不同:
三、文字输入控件EditText
最大行数
android:maxLines=“1”
最大长度
android:maxLength=“8”
提示
android:hint=“请在此输入密码”
四、图片显示控件ImageView
图片命名不要使用大写英文,不要使用数字开头,不要使用空格等
支持常见格式jpg、png、webp、bmp等
不要使用过大的图片。
五、等待风格的进度条ProgressBar
【单个控件的点击事件】
activity_main.xml
MainActivity.java
package com.example.day2_listener1224;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
// 声明Button对象
private Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到Button对象并赋值
mBtn = (Button) findViewById(R.id.btn1);
// 设置单击监听器
mBtn.setOnClickListener(new OnClickListener() {
// 点击后要触发的方法
@Override
public void onClick(View v) {
// 最简单的弹窗:Toast(吐司,浮动提示)
// 参数一:上下文
// 参数二:要显示的内容
// 参数三:显示时长(长显示或短显示)
Toast.makeText(MainActivity.this, "您点击了按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
【多控件监听】
activity_main.xml
package com.example.day2_listener;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends Activity implements View.OnClickListener {
//1.声明控件对象
private Button mBtn1,mBtn2,mBtn3;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.通过id找到控件对象
mBtn1 = (Button) findViewById(R.id.btn1);
mBtn2 = (Button)findViewById(R.id.btn2);
mBtn3 = (Button) findViewById(R.id.btn3);
//3.设置点击事件监听器
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
}
//点击回调
//参数View v:被点击的控件对象
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
Toast.makeText(this, "1", Toast.LENGTH_SHORT).show();
break;
case R.id.btn2:
Toast.makeText(this, "2", Toast.LENGTH_SHORT).show();
break;
case R.id.btn3:
Toast.makeText(this, "3", Toast.LENGTH_SHORT).show();
break;
}
}
}
MainActivity.java
【监听器 Listener】
Interface definition for a callback to
be invoked when a view is clicked.
【打印日志】
类似于System.out.println,Android中提供了日志来在
用户无法察觉的前提下,使开发者能够捕捉到app的调试信息。
捕捉日志:
1.Eclipse
开启Logcat窗口
2.AS
自带Logcat窗口
3.使用命令行(推荐)
过滤特定Log
adb logcat -s MainActivity
清空特定Log
adb logcat -c MainActivity
package com.example.day2_printlog;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.os.Build;
public class MainActivity extends Activity {
private Button mBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn = (Button) findViewById(R.id.btn1);
mBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//打印调试日志
//参数一:标签
//参数二:输出的信息
Log.d("MainActivity", v.toString());
}
});
}
}
【Dialog】
补充:捕获Log的时候 不要多台设备同时连线(比如连着真机且开着模拟器)
海马玩
http://droid4x.haimawan.com/
https://www.yeshen.com/
http://news.bluestacks.cn/
package com.example.day2_listener1224;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button mBtn;
//声明Dialog对象
private Builder mBuilder;
private AlertDialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//建造器对象
mBuilder = new AlertDialog.Builder(this);
//设置图标
mBuilder.setIcon(R.drawable.ice_cream);
//设置标题
mBuilder.setTitle("吃不吃?");
//设置显示信息
mBuilder.setMessage("今天是平安夜,吃不吃冰淇淋?");
//设置取消按键
//参数一:按键显示的文字
//参数二:点击事件监听器(不是View下面常用的那个)
mBuilder.setNegativeButton("不吃", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "不吃了,天气太冷", Toast.LENGTH_SHORT).show();
//弹窗消失
mDialog.dismiss();
}
});
//设置确定按键
mBuilder.setPositiveButton("吃", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "再冷也要吃!", Toast.LENGTH_SHORT).show();
//弹窗消失
mDialog.dismiss();
}
});
//通过建造器对象拿到AlertDialog对象
mDialog = mBuilder.create();
mBtn = (Button) findViewById(R.id.btn1);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//展示弹窗
mDialog.show();
}
});
}
}
xml