【Android】碎片化初探

本文介绍了Android中的Fragment,它是从Honeycomb 3.0开始引入的,可以视为Activity的一部分,拥有独立的生命周期。文章详细讲解了Fragment的实例化、生命周期、关键代码示例,包括使用静态工厂方法创建、检查多窗口功能、通过FragmentTransaction进行交互,以及利用ObjectAnimator创建动画和Fragment到Activity的跳转。

一、Fragment的简介


1.Fragment是Android honeycomb 3.0新增的概念,你可以将Fragment类比为Activity的一部分

2. 拥有自己的生命周期,接收自己的输入,你可以在Activity运行的时加入或者移除Fragment

3. 碎片必须位于是视图容器


二、Fragment的生命


setContentView  ----    onInflate
create			---- 	onAttach: 碎片与其活动关联 (getActitvity():返回碎片附加到的活动)
create			----	onCreate: 不能放活动视图层次结构的代码
create			----	onCreateView: 返回碎片的视图层次结构
						public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
							if (null == container)	//容器父元素
							{
								return null;
							}
							View v = inflater.iniflate(R.layout.details, container, false);
							TextView textview = (TextView)v.findViewById(R.id.textview).
							textview.setText("");	
							return v;
						}
						LayoutInflater类,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;
						而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
						具体作用:
						1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
						2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

create			----	onActivityCreated: 活动的onCreate之后调用,用户还未看到界面
start			----	onStart: 用户能看到碎片
resume			----	onResume: 调用之后,用户可以与用于程序调用
pause			----	onPause: 可暂停,停止或者后退
				----	onSaveInstanceState:保存对象
stop			----	onStop
destory			---- 	onDestroyView:
destory			----	onDestroy
destory			----	onDetach: 碎片与活动解绑
		        ----	setRetainInstance: 如果参数为true,表明希望将碎片对象保存在内存中,而不从头创建

三、 Fragment关键代码示例


1.  使用静态工厂方法实例化碎片

public static MyFragment newInstance(int index) {
	MyFragment f = new MyFragment();
	Bundle args =new Bundle();
	args.putInt("index", index);
	f.setArguments(args);
	return f;
}

2. 获取是否多窗口的函数

public boolean isMultiPane() {
		return gerResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
}

3. FragmentTransaction用于实现交互

 	FragmentTransactin ft = getFragmentManager().beginTransaction();
 	ft.setTranstition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
 	//ft.addToBackStack("details"); //如果碎片使用后退栈,需要使用该函数
 	ft.replace(R.id.details, details);
 	ft.commit();

4. ObjectAnimator自定义动画

FragmentTransaction类中指定自定义动画的唯一方法是setCustomAnimations()
	从左滑入的自定义动画生成器
	<?xml version="1.0", encoding="utf-8"?>
	<objectAnimator  xmlns:android="http://schemas.android.com/apk/res/android"
		android:interpolator="@android:interpolator/accelerate_decelerate" //插值器在android.R.interpolator中列出
		android:valueFrom="-1280"
		android:valueTo="0"	//动画完成时,可以让用户看到
		android:valueType="floatType"
		android:propertyNmae="x"	// 动画沿那个维度发生
		android:duration="2000" />								  	
	<set>可以封装多个<objectAnimator>

5. fragment如何跳转到其他activity

示例代码:(特别注意:MallActivity需要在AndroidManifest.xml中声明)
	public class MallFragment extends Fragment {
		@Override
		public void onAttach(Activity activity) {
			super.onAttach(activity);
			// 这个方法你可以获取到父Activity的引用。
			Intent intent = new Intent(getActivity(), MallActivity.class);
			startActivity(intent);       
    	        }   
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值