版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在Android中利用Fragment模仿一个微信界面
本篇文章为大家展示了怎么在Android中利用Fragment模仿一个微信界面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是Fragment自从Android3.0中引入fragments的概念,根据词海的翻译可以译为:碎片、片段。其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments。fragments的设计不需要你来亲自管理viewhierarchy的复杂变化,通过将Activity的布局分散到frament中,可以在运行时修改activity的外观,并且由activity管理的backstack中保存些变化。当一个片段指定了自身的布局时,它能和其他片段配置成不同的组合,在活动中为不同的屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或更多)。Fragment必须被写成可重用的模块。因为fragment有自己的layout,自己进行事件响应,拥有自己的生命周期和行为,所以你可以在多个activity中包含同一个Fragment的不同实例。这对于让你的界面在不同的屏幕尺寸下都能给用户完美的体验尤其重要。Fragment优点Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。Fragment提供一个新的方式让你在不同的安卓设备上统一你的UI。Fragment解决Activity间的切换不流畅,轻量切换。Fragment替代TabActivity做导航,性能更好。Fragment在4.2.版本中新增嵌套fragment使用方法,能够生成更好的界面效果。Fragment做局部内容更新更方便,原来为了到达这一点要把多个布局放到一个activity里面,现在可以用多Fragment来代替,只有在需要的时候才加载Fragment,提高性能。可以从startActivityForResult中接收到返回结果,但是View不能。图片中给出了实例的效果,在点击下方的按钮时,上半部分会自动切换成对应的内容。这里使用的技术是fragment。想必大家对fragment已经有所了解,就算不清楚,百度也有详细的介绍。在这里就着重介绍实现的过程。首先,拿其中的一个部分“首页”来讲:
上面一部分是fragment,下面则是相对固定的按钮区。也就是说,当点击按钮时,切换的只是上半部分内容。所以,每一个fragment都有一个自己的xml布局文件。就想图中所示的,“首页”这个fragment的xml文件就是由一个textview构成。完成fragment的xml文件后,需要定义一个对应的Java类来找到它,比如:首页对应的类是homeFragment.java。注意,这个类需要继承fragment,并且每一个这样继承fragment的类都需要重写其onCreateView的方法。具体代码是:import
android.app.Fragment;
import
android.os.Bundle;
import
android.support.annotation.Nullable;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
com.example.cerian.marcon.R;
/**
*
Created
by
Cerian
on
2017/7/9.
*/
public
class
homeFragment
extends
Fragment
{
@Override
public
View
onCreateView(LayoutInflater
inflater,
ViewGroup
container,
Bundle
savedInstanceState)
{
View
view=inflater.inflate(R.layout.fragment_home,
null);
//找到按钮前要加view.
return
view;
}
}完成到这步时,每一个fragment的内容就已经完成了。接下来要做的是,将每一个fragment与一个页面绑定并在其上显示。这里我用了一个menufunction.xml代码是:<?xml
version="1.0"
encoding="utf-8"?>
<RelativeLayout
android:id="@+id/rl_layout"
xmlns:android="/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:showDividers="beginning|end|middle"
android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<ImageView
android:id="@+id/ig_home"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/homepage1"/>
<ImageView
android:id="@+id/ig_lib"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/library1"/>
<ImageView
android:id="@+id/ig_my"
android:clickable="true"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/my1"/>
</LinearLayout>
</RelativeLayout>在这个布局中,上面的LinearLayout是用来显示fragment内容的,下面的是按钮。然后,在这个menufunction.xml的对应java类中,找到定义好的fragment,并显示。主要的思想是:①拿到一个管理者②开启一个事务③替换fragment内容④提交,注意,这里的第四步很容易被遗忘。代码是:import
android.app.FragmentManager;
import
android.app.FragmentTransaction;
import
android.os.Bundle;
import
android.support.v7.app.AppCompatActivity;
import
android.view.View;
import
android.widget.ImageView;
import
com.example.cerian.marcon.fragment.homeFragment;
import
com.example.cerian.marcon.fragment.libFragment;
import
com.example.cerian.marcon.fragment.myFragment;
/**
*
Created
by
Cerian
on
2017/7/9.
*/
public
class
home
extends
AppCompatActivity
implements
View.OnClickListener
{
private
ImageView
ig_home,
ig_lib,
ig_my;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.menufunction);
ig_home
=
(ImageView)
findViewById(R.id.ig_home);
ig_lib
=
(ImageView)
findViewById(R.id.ig_lib);
ig_my
=
(ImageView)
findViewById(R.id.ig_my);
ig_home.setOnClickListener(this);
ig_lib.setOnClickListener(this);
ig_my.setOnClickListener(this);
/**
*
第一步:拿到管理者
*
第二步:开启事务
*
第三步:替换
*
第四步:提交
*/
FragmentManager
fragmentManager
=
getFragmentManager();
FragmentTransaction
beginTransaction
=
fragmentManager.beginTransaction();
beginTransaction.replace(R.id.ll_layout,
new
homeFragment());
ig_home.setImageResource(R.mipmap.homepage2);
beginTmit();
}
@Override
public
void
onClick(View
view)
{
FragmentManager
fragmentManager
=
getFragmentManager();
FragmentTransaction
beginTransaction
=
fragmentManager.beginTransaction();
switch
(view.getId())
{
case
R.id.ig_home:
//点击的是主页
beginTransaction.replace(R.id.ll_layout,
new
homeFragment());
ig_home.setImageResource(R.mipmap.homepage2);
ig_my.setImageResource(R.mipmap.my1);
ig_lib.setImageResour
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京工业大学浦江学院《社会企业》2022-2023学年第一学期期末试卷
- 分数的产生说课稿
- 蹲踞式跳远说课稿
- 南京工业大学浦江学院《计算机网络课程设计》2023-2024学年期末试卷
- 《线段的垂直平分线》说课稿
- 南京工业大学《虚拟仪器设计》2023-2024学年第一学期期末试卷
- 南京工业大学《社会问题概论》2022-2023学年第一学期期末试卷
- 南京工业大学《力学方法与文化》2023-2024学年第一学期期末试卷
- 南京工业大学《混凝土与砌体结构设计》2021-2022学年第一学期期末试卷
- 南京工业大学《工程合同管理》2023-2024学年第一学期期末试卷
- 2024年保育员(中级)考试题库(含答案)
- 九年级语文上册其中知识点复习
- 浙江省杭州市十三中教育集团2024-2025学年七年级上学期期中科学试题(无答案)
- 2024年江苏省泰州市保安员理论考试题库及答案(完整)
- 糖尿病酮症酸中毒
- 人教版(2024新版)七年级上册数学期中模拟试卷(无答案)
- 企业法律合规与内部审计制度
- 2024年应急指示灯具:消防应急灯合作协议书
- 湖北省武汉市部分学校2022-2023学年高一上学期期中联考英语试卷
- 100MWp户用光伏发电EPC总承包 投标方案(技术方案)
- 《中国心力衰竭诊断和治疗指南2024》解读
评论
0/150
提交评论