黑马程序员技术交流社区
标题: 十年磨一剑【基哥笔记】Android基础—Day11 [打印本页]
作者: allen927 时间: 2016-1-7 14:58
标题: 十年磨一剑【基哥笔记】Android基础—Day11
本帖最后由 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();
}
下载资源
作者: 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 |