android随笔26--常用代码

隐藏标题栏

public void onCreat(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);
   requestWindowFeature(Window.FEATURE_NO_TITLE);
   setContentView(R.layout.XXX);
   }

注意:requestWindowFeature(Window.FEATURE_NO_TITLE);必须写在setContentView(R.layout.XXX); 上边 否则会报错

Toast

Toast.makeText(Activity.this,"想要显示的内容",Toast.LENGTH_SHORT).show();

参数一:Context 上下文对象
参数二:显示的文本内容
参数三: Toast的显示时长 :
Toast.LENGTH_SHORT 短时长 默认值0
Toast.LENGTH_LONG 长时长 默认值1

Menu的使用

res目录下新建一个menu文件夹,在此文件夹下新建一个xml文件,在该xml中添加如下代码:

<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>

然后在Activity中重写onCreateOptionsMenu()方法,代码如下:

public boolean onCreateOptionsMenu(Menu menu){
	getMenuInflater.inflate(R.menu.main,menu);
	return true;
}

通过getMenuInflater()方法能够得到MenuInflater对象,再调用它的inflater()方法就可以给当前活动创建菜单了.
inflater()方法接收两个参数:
参数一:指定我们通过哪一个资源文件夹来创建菜单,这里传入R.menu.main
参数二:指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入Menu参数.
然后给这个方法返回true,表示允许创建的菜单显示出来,若返回false,创建的菜单将无法显示

然后定义菜单响应事件,在Activity中重写onOptionsItemSelected()方法:

public boolean onOptionsItemSelected(MenuItem item){
	switch(item.getItemId){
			case R.id.add_item:
			Toast.makeText(this,"显示内容",Toast.LENGTH_SHORT).show();
			break;
			
			case R.id.remove_item:
			Toast.makeText(this,"显示内容",Toast.LENGTH_SHORT).show();
			break;
	}
	return true;
}

在onOptionsItemSelected()方法中,通过调用item.getItemId()来判断我们点击的是哪一个菜单项,然后给每个菜单项加入自己的逻辑处理.

Intent的使用

Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以致命当前组件想要执行的动作,还可以在不同组件之间传递数据.Intent一般可被用于启动活动,启动服务,以及发送广播等场景

1.显式Intent
AndroidManiFest.xml中为SecondActivity进行测试的代码:

<activity android:name=".SecondActivity">
</activity>

SecondActivity不是主活动,因此不需要配置标签里的内容

修改FirstActivity中按钮的点击事件,代码如下:

Intent i = new Intent(FirstActivity.this,SecondActivity.class);
	stratActivity(i);

构建出一个Intent,传入FirstActivity作为上下文,传入SecondActivity.class作为目标活动,这样"意图"就非常明显了,即在FirstActivity这个活动的基础上打开SecondActivity()方法来执行这个Intent.

Intent有对各构造函数的重载,其中一个是Intent(Context packageContext,Class<?>cls).该构造函数接收两个参数:
参数一:Context要求提供一个启动活动的上下文
参数二:Class指定想要启动的目标活动
通过这个构造函数就可以构建出Intent的"意图".
Activity类中提供了一个startActivity()方法,该方法是专门用于启动活动的,它接收一个Intent参数,这里将构建好的Intent传入startActivity()方法就可以启动目标活动了.

因为Intent的"意图"非常明显,因此我们称之为显式Intent.

2.隐式Intent
隐式Intent并不明确指出想要启动哪一个活动,而是指定了一系列更为抽象的action和category等信息,然后交友系统去分析这个Intent,并帮助我们找出可以相应这个隐式Intent的活动去启动.

通过在activity标签下配置intent-filter的内容,可以指定当前活动能够相应的action和category,打开AndroidManifest.xml,添加如下代码:

<activity android:name=".SecondActivity">
	<intent-filter>
		<action android:name="com.example.activitytest.ACTION_START"/>
		<category android:name="android.intent.category.DEFAULT"/>
	</intent-filter>
</activity>

在action标签中指明了当前活动可以响应com.example.activitytest.ACTION_START这个action,而category标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还有可能带有的category.只有action和category中的内容能够同时匹配上Intent中指定的action和category时,该活动才能响应该Intent.

android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中.
因此修改FirstActivity中按钮的点击事件,代码如下:

Intent i = new Intent("com.example.activitytest.ACTION_START");
	startActivity(i);

同样能够正常启动SecondActivity.

=======================================

2.1
每个Intent中只能指定一个action,但却能指定多个category.
修改FirstActivity中按钮的点击事件,代码如下:

Intent i = new Intent("com.example.activitytest.ACTION_START");
	i.addCategory("com.example.activitytest.MY_CATEGORY");
	startActivity(i);

可以调用Intent中的addCategory()方法来添加category.
注意:需要修改SecondActivity在AndroidManifest的intent-filter添加代码声明响应这个category:

<activity android:name=".SecondActivity">
	<intent-filter>
		<action android:name="com.example.activitytest.ACTION_START"/>
		<category android:name="android.intent.category.DEFAULT"/>
		<category android:name="com.example.activitytest.MY_CATEGORY"/>
	</intent-filter>
</activity>

============================================
2.2
小案例:展示一个网页
修改FirstActivity中的按钮点击事件的代码:

Intent i = new Intent(Intent.ACTION_VIEW);
	i.setData(Uri.parse("http://www.XXX.com"));
	startActivity(i);

指定了Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,其常量值为android.intent.action.VIEW.然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去.

============================================

2.3
在intent-filter标签中再配置一个data标签,用于更精确地指定当前活动能够响应什么类型的数据.data标签中主要可以配置以下内容:
1.android:scheme 指定数据的协议部分,例如http部分
2.android:host 指定数据的主机名部分,例如www.xxx.com部分
3.android:port 指定数据的端口部分,一般紧随主机名之后
4.android:path 指定主机名和端口之后的部分,例如一段网址中跟在域名之后的内容
5.android:mimeType 指定可以处理的数据类型,允许使用通配符的方式进行指定

小案例:
新建xxx_layout.xml布局文件,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"		
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:orientation="vertical">
	<Button
		android:id="@+id/button3"
		android:layout_width="match_parent"
		android:layout_height="wrap_parent"
		android:text="Button3"
	/>
</LinearLayout>

然后新建xxxActivity继承自Activity,代码如下:

public class xxxActivity extends Activity{
	@Override
	protected void onCreat(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.id.xxx_Activity);
	}
}

最后在AndroidManifest.xml中为xxxActivity进行注册

<activty android:name=".xxxActivity">
	<intent-filter>
		<action android:name="android.intent.action.VIEW"/>
		<category android:name="android.intent.category.DEFAULT"/>
		<data android:scheme="http"/>
	</intent-filter>
</activity>

为按钮设置点击事件

button3.setOnClickListener(new OnClickListener(){
	public void onClick(View v){
		Intent i = new Intent(Intent.ACTION_VIEW);
		i.setData(Uri.parse("http://www.XXX.com"));
		startActivity(i);
	}
});

============================================

2.4
拨打电话的意图

Intent i = new Intent(Intent.ACTION_DIAL);//调用系统拨号动作
	i.setData(Uri.parse("tel:10086"));

向下一个活动传递数据
Intent中提供了一系列putExtra()方法的重载,可以将想要传递的数据存在Intent中,启动了另一个活动后,只需要将这些数据从Intent中取出即可.

例如:将一个字符串传递到xxxActivity中,代码如下:

//添加数据
String data = "aaa";
Intent i = new Intent(Activity.this,xxxActivity.class);
i.putExtra("key名称",data);
startActivity(i);

putExtra()方法的参数:
参数一:键,用于存储和取值
参数二:想要传递的数据

//取出数据
Intent i = getIntent();
String data = i.getStringExtra("key名称");

通过getIntent()方法获得启动xxxActivity的Intent,然后调用getStringExtra()方法,传入相应的键值,就可以拿到传递来的数据

字符串: getStringExtra()
整数: getIntExtra()
布尔: getBooleanExtra()


2.5
返回数据给上一个Activity
startActivityForResult()方法在Activity销毁的时候能够返回一个结果给上一个Activity

startActivityForResult()接收两个参数:
参数一: Intent
参数二: 参数,用于在之后的回调中判断数据来源

...
Intent i = new Intent(Activity.this,xxxActivity.class);
startActivityForResult(i, 任意唯一值);
...
//需要重写onActivityResult()方法
protected void onActivityResult(int requestCode, int resultCode, Intent data){
	switch(requestCode){
	case 1:
		if(requestCode == REQUEST_OK){
			String returnedData = data.getStringExtra("data_return"); 
		}
		break;
		default:
	}
}

onActivityResult()方法有三个参数:
参数一: requestCode,启动活动时传入的请求码
参数二: resultCode,返回数据时传入的处理结果
参数三: data,携带着返回数据的Intent

EditText的digits属性

//这是一个用户输入身份证号的EditText 所以限制最长18位 且限定输入内容只能为 0123456789xX 
<EditText
                android:id="@+id/et_id"                
                android:textColorHint="@color/color_9EA9BC"
                android:textColor="@color/color_3C3E5B"
                android:textSize="16sp"
                android:hint="请输入身份证号"
                android:background="@null"
                android:singleLine="true"
                android:maxLength="18"
                android:inputType="number"
                **android:digits="0123456789xX"**  //限制输入内容范围
                android:gravity="right|center_vertical"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent" />
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值