书小宅之android开发——常用语法四两拨千斤

活动是可以包含用户界面的组件,主要用于和用户进行交互。

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值