Fragment   实现的 分类 效果

布局文件的信息:

<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="vertical"
android:layout_margin="0dp"
android:background="#fffef9"
tools:context=".MianActivity" > <!-- 1 替换的Fragment的内容! -->
<LinearLayout
android:id="@+id/contentfragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" > </LinearLayout> <!-- 2 底部的菜单 --> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
android:layout_margin="0dp"
android:layout_gravity="bottom"
android:orientation="horizontal" > <Button
android:id="@+id/articalmenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:layout_weight="1"
android:text="文章"
/> <Button
android:id="@+id/forummenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="0dp"
android:text="论坛"
/> <Button
android:id="@+id/gamemenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_margin="0dp"
android:text="游戏"
/> </LinearLayout> </LinearLayout>

Activity  代码:

package stu.love.game;

import stu.love.artical.ArticalListFragment;
import stu.love.forum.ForumFragment;
import stu.love.utils.ImageCacheSDUtils;
import android.app.ActivityManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.util.LruCache;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button; import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader.ImageCache;
import com.android.volley.toolbox.Volley; /**
* 3DM game 程序的 入口 測试类! *
* */ public class MianActivity extends FragmentActivity implements OnClickListener { private static String Tag= "MianActivity"; // 菜单选项
private Button articlemenu;
private Button forummenu;
private Button gamemenu; // 图片缓冲
public RequestQueue queue;
public ImageCache imageCache;
public LruCache<String, Bitmap> lruCache;
public Context context; // fragment
private FragmentManager manager;
private FragmentTransaction transaction;
private ArticalListFragment articalListFragment;
private ForumFragment forumFrgment;
private GameFragment gameFragment; public MianActivity() {
super();
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_mian); // 1 初始化组件
initComponet();
// 2 初始化 frgment
manager = getSupportFragmentManager();
initArticalListFragment(); } @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
} /**
* 1 初始化组件
*
* */
private void initComponet() {
articlemenu = (Button) this.findViewById(R.id.articalmenu);
forummenu = (Button) this.findViewById(R.id.forummenu);
gamemenu = (Button) this.findViewById(R.id.gamemenu);
articlemenu.setOnClickListener(this);
forummenu.setOnClickListener(this);
gamemenu.setOnClickListener(this); /**
* 1 开启异步任务 去下载数据! * 使用Volley框架!
* 内部封装好了 异步任务!
* 获取到数据之后 才干 设置 适配器!
自己定义Adapter
* */
// 获取请求队列
context = getApplicationContext();
queue = Volley.newRequestQueue(context);
//获得系统的动态的剩余内存空间
int memClass = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
.getMemoryClass();
//获取剩余的内存空间的/8
final int cacheSize = 1024 * 1024 * memClass / 8;
// 设置缓存的空间大小! lruCache = new LruCache<String, Bitmap>(cacheSize);
// 初始化 图片的缓存!
imageCache = new ImageCache() {
public void putBitmap(String url, Bitmap bitmap) {
// TODO Auto-generated method stub
//设置缓存的路径
Log.i(Tag, "--- 一级缓存 存入图片");
lruCache.put(url, bitmap); if(ImageCacheSDUtils.getInstance().getBitmapData(url)== null)
{
byte[] data = ImageCacheSDUtils.getInstance().BitmapToByte(bitmap);
Log.i(Tag, "--- 二级缓存 存入图片");
ImageCacheSDUtils.getInstance().putBitmapData(url, data);
}
}
public Bitmap getBitmap(String url) {
// TODO Auto-generated method stub
Log.i(Tag, "--- 一级缓存 取出图");
Bitmap bitmap = lruCache.get(url); return bitmap;
}
};
} /**
* 2 事件的响应 替换 Fragment2 事件的响应 替换 Fragment
*/
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
transaction = manager.beginTransaction();
switch (v.getId()) {
case R.id.articalmenu:
if (articalListFragment == null)
articalListFragment = new ArticalListFragment(queue, imageCache, lruCache, context);
transaction.replace(R.id.contentfragment, articalListFragment,"articalListFragment");
transaction.addToBackStack("articalListFragment");
break; case R.id.forummenu:
if (forumFrgment == null)
forumFrgment = new ForumFragment();
transaction.replace(R.id.contentfragment, forumFrgment,"forumFrgment");
transaction.addToBackStack("forumFrgment");
break; case R.id.gamemenu:
if (gameFragment == null)
gameFragment = new GameFragment(queue, imageCache, lruCache, context);
transaction.replace(R.id.contentfragment, gameFragment,"gameFragment");
transaction.addToBackStack("gameFragment");
break;
}
// fragment 的替换!
transaction.commit();
} // 3 初始化 Fragment 第一次载入的时候数据!
public void initArticalListFragment()
{
transaction = manager.beginTransaction();
articalListFragment = new ArticalListFragment(queue, imageCache, lruCache, context);
transaction.add(R.id.contentfragment, articalListFragment,"articalListFragment");
transaction.addToBackStack("articalListFragment");
// 由于这里 ,没有 commit 所以 不能show data!
transaction.commit();
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.mian, menu);
return true;
} }

Fragment 实现的 分类 效果的更多相关文章

  1. 使用ViewPager+Fragment实现选项卡切换效果

    实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...

  2. Android - FragmentTabHost 与 Fragment 制作页面切换效果

    使用 FragmentTabHost 与 Fragment 制作页面切换效果 API 19 TabHost已经不建议使用了.用 FragmentTabHost 来代替TabHost.实际上 Fragm ...

  3. Android - TabHost 与 Fragment 制作页面切换效果

    Android - TabHost 与 Fragment 制作页面切换效果 Android API 19 , API 23 三个标签页置于顶端 效果图: 在文件BoardTabHost.java中定义 ...

  4. python + sklearn ︱分类效果评估——acc、recall、F1、ROC、回归、距离

    之前提到过聚类之后,聚类质量的评价: 聚类︱python实现 六大 分群质量评估指标(兰德系数.互信息.轮廓系数) R语言相关分类效果评估: R语言︱分类器的性能表现评价(混淆矩阵,准确率,召回率,F ...

  5. CNN结构:图片风格分类效果已成(StyleAI)

    CNN结构:图片风格分类效果已成.可以在色彩空间对图片风格进行分类,并进行目标分类. StyleAI构架:FasterRCnn + RandomTrees 为何不使用MaskRCNN? MaskRCN ...

  6. NavigationDrawer+Fragment实现侧滑菜单效果

    学习了NavigationDrawer 官方Support包中的SlidingMenu版本,练了下手.用到了ListView中item不同的布局 以后会升级加上ViewPager和GridView实现 ...

  7. Android下fragment切换的动画效果

    网上看到的例子,转过来记录一下,学习一下,感谢原作者的辛勤编码,效果非常好 基于Android3.0新增的动画api,效果很赞 共21种动画效果: <item>X轴缩放</item& ...

  8. django实现日期分类效果

    日期分类效果图 实现功能:能够按照月份进行分类,统计每个月份的文章数量,没有文章的月份不显示.点击每栏可以链接的当月的文章列表. 每月文章列表可以使用django的通用视图MonthArticleVi ...

  9. Android viewPager+fragment实现滑页效果

    先上图,手指在手机向左或者向右滑就可以实现相应的页面切换. 先看activity_main.xml文件,非常简单,主要是三个标题TextView和viewpager <?xml version= ...

随机推荐

  1. vsphere平台windows虚拟机克隆的小插曲(无法登陆系统)

    问题: 1.克隆完windows虚拟化后输入法乱码. 2.开启远程的情况下远程登录输入正确的密码也无法登录. 解决: 1.更改管理员用户密码(不输入原win7密码更改win7密码). 2.重新启用管理 ...

  2. windows无法连接到打印机 错误提示0x00000214

    win7 64位 同事win7 32位,通过\\IP连接,安装打印机时提示“windows无法连接到打印机 错误提示0x00000214” 开始——设备和打印机——添加打印机——添加本地打印机——创建 ...

  3. angularjs input使用ng-model双向绑定无效bug解决

    一.问题描述 当我们给input双向绑定变量的时候,使用ng-model有时候会出现无效的情况 二.解决办法 将绑定的变量写成对象的形式 控制器定义变量: $scope.inputText = {va ...

  4. jQuery判断字符串是否含有中文字符

    //判断字符串是不是中文String.prototype.isChinese = function () {    var reg = /[^\x00-\xff]/ig;//判断是否存在中文和全角字符 ...

  5. hibernate : object references an unsaved transient instance 问题

    save顺序问题---比如学生表和班级表..学生表里有班级ID的外键.一对多的关系. 你save的时候应该先save班级,再save学生..否则学生的外键没有对应的值,引发异常

  6. 【Uva 12105】Bigger is Better

    [Link]: [Description] 让你用最多n根棍子,组成一个数字,使得它能够被m整除; 数字1..9分别需要用-根棍子. 要求这个数字尽可能地大; 然后输出这个数字. [Solution] ...

  7. Git学习总结(5)——搭建Git简易高效服务器

    1. mysysgit+gitblit安装流程 1.1资源  需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit):  jdk1.6  Git-1.8.4-pr ...

  8. 模板实参推导 & xx_cast的实现

    首先,类模板必须被显式特化.当然了,可以通过一个辅助函数,通过参数类型,返回特化的类模板,来间接处理. 这个技术被广泛应用在ptr_fun, make_pair, mem_fun, back_inse ...

  9. leetcode第一刷_Scramble String

    字符串的好题. 题干解释的很复杂.一下让人不知所措了. 这道题究竟是什么意思呢?终于的结果是把一个字符串中字母的顺序打乱了,让你推断一个字符串能不能由还有一个字符串打乱得到.那打乱这个过程是怎么做的呢 ...

  10. jquery源码12 offset() : 位置和尺寸的方法

    // Back Compat <1.8 extension point jQuery.fx.step = {}; if ( jQuery.expr && jQuery.expr. ...