06Android学习从零单排之Fragment
2016-05-10 17:58
393 查看
06Android学习从零单排之Fragment
这是Android基础学习的最后一个部分,该部分学习完成后,将不在更新“Android学习从零单排”系列blog,在这个部分学习完成后,我也将开始学习Android项目编写。Fragment入门
在layout文件中添加2个fragment布局<fragment android:name="com.example.xwf.hsia06fragmentdemo.LeftFragment" android:id="@+id/left" //必须加ID,不然就报错 android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent"/> <fragment android:name="com.example.xwf.hsia06fragmentdemo.RightFragment" android:id="@+id/right" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent"/>
再编写2个layout种指定的2个Fragment类文件。
public class LeftFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_left, null); return view; } }
Fragment动态添加
编写2个Fragment文件。在Activity中通过getFragmentManager获得FragmentTransaction事务。
通过FragmentTransaction替换Fragment布局
提交事务。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //动态加载Fragment,通过屏幕的横竖屏来动态加载 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); Point point = new Point(); wm.getDefaultDisplay().getSize(point); int x = point.x; int y = point.y; FragmentManager fm = getFragmentManager(); FragmentTransaction fragmentTransaction = fm.beginTransaction(); if (x<y) { fragmentTransaction.replace(android.R.id.content,new VerticalFragment()); }else{ fragmentTransaction.replace(android.R.id.content,new HorizontalFragment()); } //提交事务 fragmentTransaction.commit(); }
Fragment模仿微信页面
需要注意的是在onClick中需要重新获得事务。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); butterknife.ButterKnife.bind(this); btnWechat.setOnClickListener(this); btnContact.setOnClickListener(this); btnFriend.setOnClickListener(this); btnInformation.setOnClickListener(this); fm = getFragmentManager(); //默认是微信页面 fm.beginTransaction().replace(R.id.ll_replace,new WeChatFragment()).commit(); } @Override public void onClick(View v) { //在onClick里面需要重新获取事务 FragmentTransaction ft = fm.beginTransaction(); switch (v.getId()) { case R.id.btn_wechat: ft.replace(R.id.ll_replace,new WeChatFragment()); break; case R.id.btn_contact: ft.replace(R.id.ll_replace,new ContactFragment()); break; case R.id.btn_friend: ft.replace(R.id.ll_replace,new FriendFragment()); break; case R.id.btn_information: ft.replace(R.id.ll_replace,new InformationFragment()); break; } ft.commit(); }
Fragment间通信
主要通过getFragmentManager().findFragmentByTag(“LeftFragment”)来获取到另一个Fragment对象,并调用里面的方法。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.fragment_right, null); Button btn = (Button) layout.findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LeftFragment lf = (LeftFragment) getFragmentManager().findFragmentByTag("LeftFragment"); lf.setText("数据已更改!"); } }); return layout; }
Android动画集合
- 在res下新建一个anim文件夹,将一些动画文件放在该文件下。
- 在Activity中通过AnimationUtils来加载各种动画资源文件。
public void onClick(View view) { switch (view.getId()) { case R.id.btn1: Animation a1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha); iv.startAnimation(a1); break; case R.id.btn2: Animation a2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate); iv.startAnimation(a2); break; case R.id.btn3: Animation a3 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale); iv.startAnimation(a3); break; case R.id.btn4: Animation a4 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate); iv.startAnimation(a4); break; case R.id.btn_set: Animation set = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.set); iv.startAnimation(set); break; } }
AutoCompleteTextView控件的学习使用
该控件主要是模糊提示,根据你的首字母,它会自动提示你可能需要输入的内容。根据开发文档cop一份就行了private static final String[] COUNTRIES = new String[] { "Belgium", "France", "Italy", "Germany", "Spain" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AutoCompleteTextView ACTV = (AutoCompleteTextView) findViewById(R.id.actv); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES); ACTV.setAdapter(adapter); }
关于作者
- 个人网站:北京互联科技
- Email:xiaweifeng@live.cn
- 项目地址:https://github.com/swordman20/Hsia06FragmentDemo.git
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories