06Android学习从零单排之Fragment
来源:互联网 发布:网络情歌对唱视频 编辑:程序博客网 时间:2024/06/05 01:57
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
0 0
- 06Android学习从零单排之Fragment
- 01Android学习从零单排之Activity
- 02Android学习从零单排之BroadcastReceiver
- 03Android学习从零单排之Service
- android从零单排之openFileOutput()方法学习
- 04Android学习从零单排之ContentProvider
- 05Android学习从零单排之Androidmultimedia(多媒体)
- Android从零单排之签名打包
- android从零单排之openFileOutput()使用
- android从零单排之Environment
- Android从零单排之签名打包
- 从零单排之CSS3
- Android从零单排之Adapter及其子类
- Android从零单排之免费短信验证
- Android从零单排之自动跟新
- android从零单排之百度地图的调用
- android从零单排之设置圆边按钮
- Android从零单排之5种toast详解
- Qt:QTableWidget 使用的相关问题
- hibernate注解
- android多线程----同步集合
- Git 基础(十)—— 常用命令
- 优秀工程师系列:品质与效率
- 06Android学习从零单排之Fragment
- openwrt中Makefile函数subset分析
- 生成树状结构的脚本bat\python\shell
- Word2010如何设置图表里的下标字符
- 31. Next Permutation
- poj 1298 史上最难的问题 -- 凯撒密码
- 高级CSS filters
- PHP 的 preg_match 和 preg_match_all
- 解决Android SDK Manager不能连接网络