活动是可以包含用户界面的组件,主要用于和用户进行交互。
Android程序设计讲究辑和视图的分离
。
在res/values/strings.xml文件下的资源
<resources>
<string name="string_name">hello world</string>
</resources>
在Activity中获得资源语法
,如string:
R.string.string_name
所有的活动都要在AndroidManifest.xml中注册才能生效。
在AndroidManifest.xml中引用资源语法
:
<application
android:allowBackup="true"
android:icon="@mipmap/mipmap_name"// 获得应用图标的引用
android:label="@string/string_name"// 获得字符串的引用
android:supportRtl="true"
android:theme="@style/Apptheme"
</application>
控件属性的设置:
android:layout_width //指定当前元素的宽度
android:layout_height //指定当前元素的高度
android:match_parent //让当前元素和父元素一样宽
android:wrap_content //当前元素的高度只要刚好包含里面的内容就行
androi:text //指定元素中显示的内容
配置主活动:
<application
<activity android:name=".HelloWorldActivity">
<intend-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER">
</intend-filter>
</activity>
</application>
获得图片资源的引用:@drawable/drawable_name
获得应用图标的引用:@mipmap/mipmap_name
获得布局文件的引用:@layout/layout_name
在XML中定义资源
:
javascript @+id/id_name
在onCreate()方法中添加打印日志语句:
protected void onCreate(Bundle savaInstanceState){
super.onCreate(savaInstanceState);//任何活动都需要重写Activity的onCreate方法
setContentView(R.layout.hello_world_layout);//调用res/layout/hello_world_layout布局文件
log.d("HelloWorldActivity","onCreate execute");//打印调试信息
}
在活动的onCreate中点击事件触发Toast:短期消息提示
Button button1 = (Button) findViewById(R.id.button_1);//得到按钮实例
button1.setOnClickListener(new View.OnClickListener(){//为按钮注册监听器,点击按钮会执行onClick方法
@Override
//定义弹出Toast的触发点
public void onClick(View v){
Toast.makeText(FirstActivity.this,"You clicked Button 1", Toast.LENGTH_SHORT).show();
//finish();
//销毁当前活动
}
});
在活动中菜单的创建与使用
<menu xmlns:android ="http://schemas.android.com/apk/res/android">
<item //添加菜单项
android:id="@+id/add_item"
android:title="Add"/>
<item//删除菜单项
android:id="@+id/remove_item"
android:title="Remove"/>
</menu>
//ctrl+o快捷键重写方法
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main,menu);//获得菜单对象,给当前活动创建菜单
return true;//允许创建的菜单显示出来
}
//定义菜单的响应事件
public boolean onOptionsItemSeleted(MenuItem item){
switch(item.getItemId()){//判断点击的是哪一个菜单项
case R.id.add_item;
Toast.makeText(this,"You clicked add",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item;
Toast.makeText(this,"You clicked remove",Toast.LENGTH_SHORT).show();
break;
}
}
Intent是android程序各组建之间进行交互的重要方式:
指明当前组建想要执行的动作,在不同组建之间传送数据。
显示Intent
button1.SetOnClickListener(new View.OnClickListener){
@Override
public void onCreate(View v){
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
});
隐士Intent
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START">
<category android:name="com.example.category.DEFAULT">
<category android:name="com.example.activitytest.MY_CATEGORY">
//声明category可以响应
</intent-filter>
</activity>
button1.SetOnClickListener(new View.OnClickListener){
@Override
public void onCreate(View v){
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
//转入应用程序
//Intent intent=new Intent(Intent.ACTION_VIEW);
//Android系统内置动作
//intent.setData(Uri.parse("http://www.baidu.com"));
//调用系统拨号界面
//Intent intent = new Intent(Intent.ACTION_DIAL);//系统内置动作
//intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
Intent实现数据传向下一个活动
将FirstActivity中想要的数据暂时存入intent
button1.SetOnClickListener(new View.OnClickListener){
@Override
public void onCreate(View v){
String data="hello world";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data",data);//参数对应键和值
startActivity(intent);
}
});
在SecondActivity中将数据取出
public class SecondActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState)
//savedInstanceState
super.onCreate(savedInstanceState);
Intent intent =getIntent();//启动intent
String data = intent.getStringExtra("extra_data");//通过键来取获取传递的数据
//getIntExtra,getBooleanExtra
Log.d("SecondActivity",data);
}
Intent实现数据传向上一个活动
startActivityForResult()方法启动活动(SecondActivity),期望(SecondActivity)在销毁的时候能够返回一个结果给上一个活动(FirstActivity)。
button1.SetOnClickListener(new View.OnClickListener){
@Override
public void onCreate(View v){
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);//1是唯一的请求码
}
});
//返回数据回调onActivityResult方法
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");//通过键取传回的数据
Log.d("FirstActivity",returnedData);//从data中取值并打印
}
break;
default:
}
}
public class SecondActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
Button button2 =(Button) findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener(){
//按下按钮返回数据
@Overrid
public void onClick(View v){
Intent intent= new Intent();
intent.putExtra("data_return","hello FirstActivity");
setResult(RESULT_OK,intent);//专门用于向上一个活动返回数据
//参数一:返回处理结果,RESULT_OK/RESULT_CANCELED
//参数二:返回带有数据的intent
finish();
}
});
//按下back键返回数据,点击
@Override
public void onBackPressed(){
Intent intent= new Intent();
intent.putExtra("data_return","hello FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
}
}
控件的可见性
android:visibilit
·=
visible:控件可见,默认属性
invisible:控件不可见,仍然占着原来的位置
gone:控件不仅不可见还不占屏幕任何位置
setVisibility()
可传入
View.VISIBLE、View.INVISIBLE、View.GONE