恩,昨儿说了俩布局其实就是比较常用的布局了,老师是这么说的。然后今儿又补上了剩下的三个布局,三个加起来不到20分钟就说完了。。。。
FrameLayout是最简单的布局。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。
android:visibility=”invisible”android:layout_margin=”10dp”,第一个属性控制可见与否(invisible,visible),第二个属性就是该控件离自己四周10dp。关于它我们就学了这俩属性,就是辣么简单╮(╯▽╰)╭
介个老师也没咋讲。。。
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="0,1"
android:shrinkColumns="1">
"button0.4" />
"button0.5" />
"button0.6" />
"button0.7" />
"button0.8" />
"button0.9" />
直接往手机界面拖控件。。。。╮(╯▽╰)╭
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("myActivity", "运行onCreate");
button1= (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);//XX启动XX
startActivityForResult(intent,0x23);
}
});
}
}
//记得在Android中添加相应Activity
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
package="com.example.laowang.myapplication" >
"true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
".MainActivity"
android:label="@string/app_name"
>
"android.intent.action.MAIN" />
"android.intent.category.LAUNCHER" />
".SecondActivity">
带返回值的启动
第一个界面掉用startActivityForResult(intent,requestCode);
第二个界面先掉用getIntent()得到启动的intent;
在关闭第二个界面钱先封装数据intent.putExtra
(“secondbackdata,editText,getText().toString()”);
设置resultCode setRusetlt(RESULT_OK,intent);
关闭第二个界面
第一个界面准备接受数据
重写onActivityResult(requestCode,resultCode,Intent data)
判断resultCode
然后从data中取出数据
Intent(Context packageContext,Class>cls),第一个参数Context要求一个启动活动的上下文,第二个参数Class则是指定想要启动的活动目标,构造出Intent的“意图”
Intent(Context packageContext,Class
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button button1;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("myActivity", "运行onCreate");
textView= (TextView) findViewById(R.id.textView2);
button1= (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,0x23);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText(data.getStringExtra("secondbackdata"));
}
}
//第二个Activity
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends Activity {
private Intent intent;
private TextView textView1;
private Button button;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button= (Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView1 = (TextView) findViewById(R.id.textView1);
intent=getIntent();
intent.putExtra("secondbackdata", textView1.getText().toString());
setResult(RESULT_OK, intent);
SecondActivity.this.finish();
}
});
}
}
//activity_main.xml
"http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:weightSum="3"
tools:context=".MainActivity">
"@+id/button1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="@string/button1"/>/>
"@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
//activity_second.xml
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:gravity="center">
"@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回"/>
"@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回数据"/>
下午讲的是Intent中的Action属性+隐式显示,然后实现了打电话发送邮件打开网页的功能。
Action属性:
"android.permission.CALL_PHONE"/>
"android.permission.SEND_SMS"/>
隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。需要AndroidManifest.xml中增加Activity的声明,并设置对应的Intent Filter和Action,才能被Android的应用程序框架所匹配。它并不明确的指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交给系统分析这个Intent,并找到合适的方法启动。
intent-filter intent过滤器
将要启动的界面中在mainfest中添加intent_filter
在intent-filter中必须添加action_name。
category必须填写default的
在启动界面中使用intent设置action,隐式启动该界面
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
package="com.example.laowang.android0819" >
"android.permission.CALL_PHONE"/>
"android.permission.SEND_SMS"/>
"true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
".MainActivity"
android:label="@string/app_name" >
"android.intent.action.MAIN" />
"android.intent.category.LAUNCHER" />
".SecondActivity">
"com.example.laowang.android0819.SecondActivity"/>
"android.intent.category.DEFAULT"/>
//MainActivity
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private Button button_phone;
private Button button_callPhone;
private EditText phone_number;
private Button mBtn_send;
private Button mBtn_web;
private Button mBtn_hide;
private EditText mEdit_hide;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_phone= (Button) findViewById(R.id.button_phone);
button_callPhone= (Button) findViewById(R.id.button_callPhone);
phone_number= (EditText) findViewById(R.id.ephone_number);
mBtn_send= (Button) findViewById(R.id.button_send);
mBtn_web= (Button) findViewById(R.id.button_web);
mBtn_hide= (Button) findViewById(R.id.button_hide);
mEdit_hide= (EditText) findViewById(R.id.edit_hide);
button_phone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
startActivity(intent);
}
});
button_callPhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phone_number.getText().toString()));
startActivity(intent);
}
});
mBtn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + phone_number.getText().toString()));
intent.putExtra("sms_body", "你好");
startActivity(intent);
}
});
mBtn_web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
mBtn_hide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("com.example.laowang.android0819.SecondActivity");
String value=mEdit_hide.getText().toString();
intent.putExtra(Config.BACK,value);
startActivity(intent);
}
});
}
}
//activity_main.xml
"http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:weightSum="1"
android:orientation="vertical">
"@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
"@+id/button_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="弹出打电话界面"/>
"@+id/button_callPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拨打电话"/>
"bottom"
android:id="@+id/ephone_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
"@+id/button_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送短信"/>
"@+id/button_web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打开百度"/>
"@+id/button_hide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="隐式打开"/>
"bottom"
android:id="@+id/edit_hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
//SecondActivity
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity {
private Intent intent;
private TextView mView_main;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
intent=getIntent();
mView_main= (TextView) findViewById(R.id.view_main);
String s=intent.getStringExtra(Config.BACK);
mView_main.setText(s);
}
}
//activity_second.xml
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
"@+id/view_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第二个界面"
android:textColor="#ff00"
android:textSize="40dp"/>
不得不说,界面有点丑,把按键的android:layout_width=”wrap_content”改成android:layout_width=”match_parent”后界面稍微好看了点╮(╯▽╰)╭
补充一点:上面在写打开打电话界面的时候漏了一条代码,导致点击后没有直接出现拨号的界面,现在补回来╮(╯▽╰)╭
button_phone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phone_number.getText().toString()));
startActivity(intent);
}
});