本帖最后由 allen927 于 2016-1-7 15:18 编辑
同样的课程、老师、就业,更好的学习环境,更低的学习成本! android基础Day11(高级特性)
•(掌握)fragement简介Fragment碎片或者是片段,是用户界面的一部分。你可以将其看成一个View,他有自己的生命周期,接收自己的输入事件,你可以添加、删除、替换。 Fragment必须是依附于Activity之上。他主要是为了支持更加动态和灵活的UI设计在大屏幕上,并且可以将Activity里面的逻辑进行分离。Andorid3.0 Fragment大面积的推广是在4.0上
fragment一定要指定id 和 class属性 而且 必须在onCreateView()方法里面创建View
生命周期
onAttach() fragment附加在Activity之上 onCreate() 生命周期来开始 onCreateVIew() 创建要显式的控件 onActivityCreated() Activity的生命周期开始 fragment和Activity就在一起了 onStart() 启动 onResume() 显式在前台 onPause() 暂停 onStop() 停止 onDestoryView() 销毁自身的控件 onDestory() 销毁自身 onDeatch() 与Activity分离
案例如果要操作Fragment 一定要使用FragmentManager 1 找 fm.findFragmentById() 2 替换 beginTranscation().replace().commit();
public classMainActivity extends Activity implements OnClickListener { @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //把FrameLayout替换为Fragment1 FragmentManagerfm = getFragmentManager();//Fragment管理器 FragmentTransaction ft =fm.beginTransaction();//Fragment事务 ft.replace(R.id.frame,new Fragment1());//替换 ft.commit();//提交 View tv_city =findViewById(R.id.tv_city); View tv_yule =findViewById(R.id.tv_yule); View tv_sport =findViewById(R.id.tv_sport); tv_city.setOnClickListener(this); tv_yule.setOnClickListener(this); tv_sport.setOnClickListener(this); } @Override public void onClick(View v) { //获取当前显示的Fragment FragmentManagerfm = getFragmentManager(); Fragment fragment =fm.findFragmentById(R.id.frame); switch (v.getId()) { case R.id.tv_city: if(!(fragmentinstanceof Fragment1)){ //替换 getFragmentManager().beginTransaction().replace(R.id.frame,new Fragment1()).commit(); } break; case R.id.tv_yule: if(!(fragmentinstanceof Fragment2)){ //替换 getFragmentManager().beginTransaction().replace(R.id.frame,new Fragment2()).commit(); } break; case R.id.tv_sport: if(!(fragmentinstanceof Fragment3)){ //替换 getFragmentManager().beginTransaction().replace(R.id.frame,new Fragment3()).commit(); } break; default: break; } }
低版本使用fragment
工程已经集成
•(了解)actionbar
ActionBar就是标题栏 android3.0之后把标题栏称之为ActionBar android对标题栏进行了封装
•(掌握)属性动画tween:动画
属性动画执行的就是控件真实的操作。
操作属性 •translationX,translationY: View相对于原始位置的偏移量 •rotation,rotationX,rotationY: 旋转,rotation用于2D旋转角度,3D中用到后两个 •scaleX,scaleY: 缩放比 •x,y: View的最终坐标,是View的left,top位置加上translationX,translationY •alpha: 透明度
publicvoid action(View v){ //bt执行一个平移动画 往下移动200 // ObjectAnimator animator = ObjectAnimator.ofFloat(bt,"translationY", 200); //2D旋转 // ObjectAnimatoranimator = ObjectAnimator.ofFloat(bt, "rotation", 180); //3D旋转 // ObjectAnimatoranimator = ObjectAnimator.ofFloat(bt, "rotationX", 180); //缩放 // ObjectAnimatoranimator = ObjectAnimator.ofFloat(bt, "scaleX", 2); //透明度 // ObjectAnimatoranimator = ObjectAnimator.ofFloat(bt, "alpha", 1.0f,0.8f,0.3f,0.1f);
//animator.setDuration(2000);//时间 //animator.start();//执行动画
//动画的集合 /*AnimatorSet set = new AnimatorSet(); ObjectAnimatoranimator1 = ObjectAnimator.ofFloat(bt, "translationY", 200); ObjectAnimatoranimator2 = ObjectAnimator.ofFloat(bt, "translationX", 100); set.playTogether(animator1,animator2); set.setDuration(500); set.start();*/
//通过xml配置来完成属性动画 //加载动画 Animatoranimator = AnimatorInflater.loadAnimator(this,R.animator.animator); //设置目标 animator.setTarget(bt); //执行动画 animator.start(); }
下载资源
|