Android第一行代码学习 第二章 1

第二章 先从看得到的入手——探究活动

重写Activity的onCreate()方法

public class ActivityName extends AppCompatActivity{
	@override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedINstanceState);
		setContentView(R.layout.first_layout);
	}
}

在AndroidManifest文件中注册

<mainfest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.activitytest"
	<application
	<activity android:name=".FirstActivity">
	<intent-filter>
		<action android:name="android.intent.action.MAIN" />
		<category android:name="android.intent.category.LAUNCHER" /> 
	</activity>
	</application>
</manifest>
其中,以下两行为主Activity,运行该项目时将自动启动该Activity
<intent-filter>
	<action android:name="android.intent.action.MAIN" />
	<category android:name="android.intent.category.LAUNCHER" /> 

Toast

Toast是Android系统的提供一种提醒方式。
Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();

Menu

标签用来创建具体的菜单项,然后通过android:id="@+id/"给这个菜单项指定一个唯一的标识符。
在Activity中重写onCreateOptionsMenu()方法。
public boolea onCreateOptionsMenu(Menu menu){
getMenuInflater.inflate(R.menu.main, menu);
return true;
}

inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById()的区别,inflate是加载一个布局文件,而findViewById则是从布局文件中查找一个控件。

在Activity中重写onOptionsItemSelected()方法:
public boolean onOptionsItemSelected(@NotNull MenuItem item){
//switch…case语句中不能使用R.id

}

Intent

Intent是一个可以从一个应用程序请求动作的消息处理对象。可以实现组件间的通信,主要有以下三种基本应用:开启Activity,开启Service,开启Broadcast。

Intent种类分为两种:显示Intent和隐式Intent。

显示Intent:

显示Intent是指在创建Intent对象时就指定接收者(如:ACtivity、Service或者BroadcastReceiver),以Activity为例,在启动Activity时必须在Intent中指明要启动的Activity所在的类。通常情况下,在一个Android项目中,如果只有一个Activity,那么只需要在AndroidManifest.xml中进行配置,并将其设置为程序的入口,这样,当运行该项目时将自启动该Activity。否则,需要应用Intent和startActivity()方法来启动需要的Activity,具体步骤如下:

Intent intent = new Intent(Context packageContext, Class<?>cls)

packageContext:用于指定一个启动Activity的上下文对象,可以用ActivityName.this来指定
cls:用于指定要启动的Activity所在的类,可以用ActivityName.class来指定

eg:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

之后,startActivity()方法启动Activity
public void startActivity(Intent intent)

隐式Intent:

隐式Intent是指创建Activity对象时不指定具体的接收者,而是定义要执行的Action、Category和Date,然后让Android系统根据相应的匹配机制找到要启动的Activity。

在使用隐式Intent启动Activity时,需要为Intent对象定义Action、Category和Data属性,然后再调用startActivity()启动匹配的Activity。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

每个intent只能指定一个action,但却能指定多个category,可以使用addcategory()方法进行添加。

在自己定义的活动中进行设置以满足隐式intent的条件,在标签下配置的内容,可以指定当前活动能够响应的action和category,

<intent-filter>
	<action android:name="android:intent:action:MYACTION"/>
	<category android:name="      "/>
</intent-filter>

然后,在使用intentActivity时:
Intent = new intent(“android:intent:action:MYACTION”);
startActivity(intent);

intent-filter的action标记

标记用于指定组件所能响应的动作,以字符串形式表示

Android系统支持的标准Action字符串常量如下表所示:

常量(Intent设置中使用)对应字符串(intent-filter中使用 )说 明
ACTION_MAINandroid:intent:action:MAIN作为初始Activity启动
ACTION_VIEWandroid.intent.action.VIEW查看指定数据
ACTION_ACTION_DATAandroid.intent.action.ACTION_DATA指定某块数据将被附加到其他地方
ACTION_EDITandroid.intent.action.EDIT编辑指定数据
ACTION_PICKandroid.intent.action.PICK从列表中选择某项,并返回所选的数据
ACTION_CHOOSERandroid.intent.action.CHOOSER显示一个Activity选择器
ACTION_GET_CONTENTandroid.intent.action.GET_CONTENT允许用户选择特定类型的数据并返回
ACTION_DIALandroid.intent.action.DIAL显示拨号界面
ACTION_CALLandroid.intent.action.CALL直接像指定用户拨打电话
ACTION_SENDandroid.intent.action.SEND向其他人发送数据
ACTION_SENDTOandroid.intent.action.SENDTO向其他人发送消息
ACTION_ANSWERandroid.intent.action.ANSWER应答电话
ACTION_INSERTandroid.intent.action.INSERT插入数据
ACTION_DELETEandroid.intent.action.DELETE删除数据
ACTION_RUNandroid.intent.action.RUN运行数据
ACTION_SYNCandroid.intent.action.SYNC执行数据同步
ACTION_PICK_ACTIVITYandroid.intent.action.PICK_ACTIVITY用于选择Activity
ACTION_SEARCHandroid.intent.action.SEARCH执行搜索
ACTION_WEB_SEARCHandroid.intent.action.WEB_SEARCH执行Web搜索
ACTION_FACTORY_TESTandroid.intent.action.FACTORY_TEST工厂测试的入口点
intent-filter的data标记

标记用于向Action提供要操作的数据,它可以是一个URI对象或者数据类型,其中URI格式为:

<data android:scheme="string"
	android:host="string"
	android:port="string"
	android:path="string"
	android:mimeTyoe="string" />

android:scheme 协议名

android:host 主机名

android:port 端口名

android:path 路径名

android:mimeType 能处理的数据类型

intent-filter的category标记

标记用于指定以何种方式去执行intent请求的动作。

常量常量对应字符串简单说明
CATEGORY_DEFAULandroid.intent.category.DEFAULT默认的Category
CATEGORY_BROWSABLEandroid.intent.category.BROWSABLE指定该Activity能被浏览器安全调用
CATEGORY_TABandroid.intent.category.TAB指定Activity作为TabActivity的Tab页
CATEGORY_LAUNCHERandroid.intent.category.LAUNCHERActivity显示顶级程序列表中
CATEGORY_INFOandroid.intent.category.INFO用于提供包信息
CATEGORY_HOMEandroid.intent.category.HOME设置该Activity随系统启动而运行
CATEGORY_PREFERENCEandroid.intent.category.PREFERENCE该Activity是参数面板
CATEGORY_TESTandroid.intent.category.TEST该Activity是一个测试
CATEGORY_CAR_DOCKandroid.intent.category.CAR_DOCK指定手机被插入汽车底座(硬件)时运行该Activity
CATEGORY_DESK_DOCKandroid.intent.category.DESK_DOCK指定手机被插入桌面底座(硬件)时运行该Activity
CATEGORY_CAR_MODEandroid.intent.category.CAR_MODE设置该Activity可在车载环境下使用
CATEGORY_APP_MARKETandroid.intent.category.APP_MARKET让Activity允许用户浏览和下载新应用

参考《零基础学Android》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值