黑马程序员技术交流社区

标题: 十年磨一剑【基哥笔记】Android基础—Day11 [打印本页]

作者: allen927    时间: 2016-1-7 14:58
标题: 十年磨一剑【基哥笔记】Android基础—Day11
本帖最后由 allen927 于 2016-1-7 15:18 编辑


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

android基础Day11(高级特性)

资源总连接:http://bbs.itheima.com/thread-249703-1-1.html

(掌握)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笔记
课程视频代码






作者: allen927    时间: 2016-1-7 15:37
师者学者团结如一,看天下路广心平。
作者: 小春同学    时间: 2016-1-7 17:35
小春同学来顶,基哥牛逼!
作者: 1号猿    时间: 2016-1-7 17:46
啊啊啊啊啊啊基哥
作者: ITHM明    时间: 2016-1-7 18:04
等了好久终于等到今天~!感谢基哥竭力分享!
作者: shenfuhan    时间: 2016-1-7 18:10
谭校有心了,虽然看不懂,不过标记一下,万一过了呢
作者: ll5353231    时间: 2016-1-8 01:51
鸡哥给力啊
作者: superlu    时间: 2016-3-18 16:10
还厉害啊
作者: 蒂尔    时间: 2016-4-18 08:52
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2