最终效果展示:

项目介绍:

通过碎片的方式显示标题列表和内容,其中也牵涉到横竖屏的知识

项目代码下载:http://files.cnblogs.com/files/Laopengblog/%E7%A2%8E%E7%89%87and%E6%A8%AA%E7%AB%96%E5%B1%8F.rar

编写过程:

一.创建用于显示标题的碎片

先创建一个 fragment 的包用来放 碎片

然后把MainActivity 继承改为 继承V4包的 FragmentActivity

  1.创建一个 显示标题的碎片 (要继承 V4 包的 Fragment)

  2.给碎片上画控件 这里只是显示标题,我们用一个ListView就行

  3.创建 onCreateView 初始化 方法

  4.创建一个适配器 这里我们用一个 ArrayAdapter<String>

  5.初始化一下数据 这里数据太多了 我直接单独写出来的 创建一个Model的包 里面用来放标题和主内容的数据 下图所示:

  6.把Activity单独保存出来 后面的代码要经常用到

private FragmentActivity activitys;

  7.初始化适配器 并 设置数据

  8.将ListView于适配器进行绑定

  9.在主布局中插入一个碎片

com.yuxuan.sphs.fragment.TitleFragment 即为刚才写好的碎片
<fragment
android:id="@+id/fm_title"
android:name="com.yuxuan.sphs.fragment.TitleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

这样我们标题的碎片就完成了 现在跑起来就可以看到标题了

以下是第一步的所有代码 (布局代码参考上面的第九条)

package com.yuxuan.sphs.fragment;

import com.yuxuan.sphs.R;
import com.yuxuan.sphs.activity.ContentActivity;
import com.yuxuan.sphs.model.Data; import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast; public class TitleFragment extends Fragment { private ListView lv; private FragmentActivity activitys; private ArrayAdapter<String> adapter; private String[] datas = Data.TITLES; @Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { activitys = this.getActivity();
lv = new ListView(activitys); adapter = new ArrayAdapter(activitys,
android.R.layout.simple_list_item_1, datas); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) { String content = Data.CONTENTS[position]; if (activitys.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
ContenFragment cf = (ContenFragment) activitys
.getSupportFragmentManager().findFragmentById(
R.id.fm_content);
cf.setTvText(content);
} else {
Intent intent = new Intent(activitys, ContentActivity.class); intent.putExtra("content", content); activitys.startActivity(intent);
} }
}); return lv;
}
}

创建用于显示标题的碎片

二.设置标题的点击事件弹出一个内容的碎片

  1.在标题碎片中设置ListView的点击事件

  2.把点击的标题获取到的对应的数据通过Intent传递给内容的Activity

代码参考上面的 “创建用于显示标题的碎片”

三.创建内容Activity以及碎片

  1.创建一个内容Activity (ContentActivity) 继承V4包的 FragmentActivity

  2.创建内容的碎片 ContentFragment

  3.在内容的布局文件中加入一个碎片 指定为 ContentFragment

  4.在内容碎片上创建一个TextView用于显示内容

  5.取到从标题碎片传过来的内容 注意这里我们是在ContentActivity上取

  6.设置内容给TextView

四.横竖屏的判断与处理  

  1.在 res 文件夹下创建一个 layout-land 的文件夹 然后将主布局文件Copy 一份进来 然后跑起来设置为横屏试试看~

  2.我们可以看到展示效果图 横屏的时候是标题和内容都同时显示的 这时候我们在这里定义两个 碎片即可 布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context="com.huarui.my12android2801.activity.MainActivity" > <fragment
android:id="@+id/fm_title"
android:name="com.yuxuan.sphs.fragment.TitleFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" /> <fragment
android:id="@+id/fm_content"
android:name="com.yuxuan.sphs.fragment.ContenFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" /> </LinearLayout>

横屏布局

  3.判断横竖屏 这里我们在点击事件时判断即可 代码参考上面的 “创建用于显示标题的碎片”

总结:此篇主要是演示了碎片的用法和横竖屏的用法,碎片我会另外写一篇详细的文章用来介绍!

Android 横竖屏+碎片的应用的更多相关文章

  1. Android横竖屏切换及其对应布局加载问题

    第一,横竖屏切换连带横竖屏布局问题: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局. 可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land ...

  2. Android横竖屏切换小结

    Android横竖屏切换小结 (老样子,图片啥的详细文档,可以下载后观看 http://files.cnblogs.com/franksunny/635350788930000000.pdf) And ...

  3. 【转】Android横竖屏切换问题

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  4. Android横竖屏切换及其相应布局载入问题

    第一.横竖屏切换连带载入多屏布局问题: 假设要让软件在横竖屏之间切换.因为横竖屏的高宽会发生转换,有可能会要求不同的布局. 能够通过下面两种方法来切换布局: 1)在res文件夹下建立layout-la ...

  5. Android横竖屏切换处理

    Android横竖屏要解决的问题应该就两个: 1.布局问题:2.重新载入问题   一.布局问题: 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你 ...

  6. Android横竖屏切换总结

    Android横竖屏切换总结(Android资料) Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 ...

  7. Android横竖屏布局总结

      Android横竖屏要解决的问题应该就两个:一.布局问题;二.重新载入问题. 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的 AndroidManifest.xml中找到你 ...

  8. 我的Android进阶之旅------>Android横竖屏切换总结

    在默认情况下当屏幕从竖评变到横屏时会触发 onConfigurationChanged 事件 在默认情况下会重新加载画面并显示和横屏一样的画面,这样会有2个问题,   * 布局问题,在竖屏 显示的布局 ...

  9. Android横竖屏切换解决方案

    Android横竖屏切换解决方案 首先在Mainifest.xml的Activity元素中加入android:configChanges="orientation|keyboardHidde ...

随机推荐

  1. Reactjs-JQuery-Vuejs-Extjs-Angularjs对比

    写在前面 前端越来越混乱了,当然也可以美其名曰:繁荣. 当新启动一个前端项目,第一件事就是纠结:使用什么框架,重造什么轮子? 那么,希望看完此篇,能够给你一个清晰的认识,或者让你更加地纠结和无所适从 ...

  2. js sort() reverse()

    数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...

  3. 转载--改变ubuntu默认编码为GBK

    在Ubuntu支持中文后(方法见上篇文章),默认是UTF-8编码,而Windows中文版默认是GBK编码.为了一致性,通常要把Ubuntu的默认编码改为GBK.当然你也可以不改,但这会导致我们在两个系 ...

  4. View and Data API Tips : Conversion between DbId and node

    By Daniel Du In View and Data client side API, The assets in the Autodesk Viewer have an object tree ...

  5. android 帧动画,补间动画,属性动画的简单总结

      帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...

  6. iOS - NSMutableAttributedString富文本的实现

    NSMutableAttributedString继承于NSAttributedString(带属性的字符串)能够简单快速实现富文本的效果;不多说直接上效果图和代码,通俗易懂: (一)效果图: (二) ...

  7. Oracle forall bulk collect批量数据更新

    对于数据量较大的插入操作可采用此种方法操作,注意: limit减少内存占用,如果数据量较大一次性全部加载到内存中,对PGA来说压力太大,可采用limit的方法一次加载一定数量的数据,建议值通常为100 ...

  8. SecondaryNameNode的工作流程

    SecondaryNameNode是用来合并fsimage和edits文件来更新NameNode和metadata的. 其工作流程为: 1.secondary通知namenode切换edits文件 2 ...

  9. Sql基础

    SELECT 列名称 FROM 表名称 SELECT * FROM 表名称 SELECT DISTINCT Company FROM Orders 去重 SELECT 列名称 FROM 表名称 WHE ...

  10. Android ListView ArrayAdapter 的简单使用

    前面写了3篇关于android的文章,其中的演示程序都写在了一个工程中,当时为了方便测试就在启动页MainActivity中放了3个按钮,点击不同的按钮进入不同的示例程序页面,MainActivity ...