A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 allen927 于 2016-1-7 15:18 编辑


同样的课程、老师、就业,更好的学习环境,更低的学习成本!
内地学员,选择长沙校区,靠谱!!!
报名热线:0731-85833115
  QQ  : 2355535415

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的生命周期开始   fragmentActivity就在一起了
    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的最终坐标,是Viewlefttop位置加上translationXtranslationY
•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();
       }






下载资源

Doc笔记
课程视频代码





8 个回复

倒序浏览
师者学者团结如一,看天下路广心平。
回复 使用道具 举报
小春同学来顶,基哥牛逼!
回复 使用道具 举报
1号猿 来自手机 中级黑马 2016-1-7 17:46:21
板凳
啊啊啊啊啊啊基哥
回复 使用道具 举报
等了好久终于等到今天~!感谢基哥竭力分享!
回复 使用道具 举报
shenfuhan 来自手机 中级黑马 2016-1-7 18:10:22
地板
谭校有心了,虽然看不懂,不过标记一下,万一过了呢
回复 使用道具 举报
ll5353231 来自手机 高级黑马 2016-1-8 01:51:49
7#
鸡哥给力啊
回复 使用道具 举报
还厉害啊
回复 使用道具 举报
蒂尔 中级黑马 2016-4-18 08:52:12
9#
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马