Fragment 实现的 分类 效果
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 实现的 分类 效果的更多相关文章
- 使用ViewPager+Fragment实现选项卡切换效果
实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...
- Android - FragmentTabHost 与 Fragment 制作页面切换效果
使用 FragmentTabHost 与 Fragment 制作页面切换效果 API 19 TabHost已经不建议使用了.用 FragmentTabHost 来代替TabHost.实际上 Fragm ...
- Android - TabHost 与 Fragment 制作页面切换效果
Android - TabHost 与 Fragment 制作页面切换效果 Android API 19 , API 23 三个标签页置于顶端 效果图: 在文件BoardTabHost.java中定义 ...
- python + sklearn ︱分类效果评估——acc、recall、F1、ROC、回归、距离
之前提到过聚类之后,聚类质量的评价: 聚类︱python实现 六大 分群质量评估指标(兰德系数.互信息.轮廓系数) R语言相关分类效果评估: R语言︱分类器的性能表现评价(混淆矩阵,准确率,召回率,F ...
- CNN结构:图片风格分类效果已成(StyleAI)
CNN结构:图片风格分类效果已成.可以在色彩空间对图片风格进行分类,并进行目标分类. StyleAI构架:FasterRCnn + RandomTrees 为何不使用MaskRCNN? MaskRCN ...
- NavigationDrawer+Fragment实现侧滑菜单效果
学习了NavigationDrawer 官方Support包中的SlidingMenu版本,练了下手.用到了ListView中item不同的布局 以后会升级加上ViewPager和GridView实现 ...
- Android下fragment切换的动画效果
网上看到的例子,转过来记录一下,学习一下,感谢原作者的辛勤编码,效果非常好 基于Android3.0新增的动画api,效果很赞 共21种动画效果: <item>X轴缩放</item& ...
- django实现日期分类效果
日期分类效果图 实现功能:能够按照月份进行分类,统计每个月份的文章数量,没有文章的月份不显示.点击每栏可以链接的当月的文章列表. 每月文章列表可以使用django的通用视图MonthArticleVi ...
- Android viewPager+fragment实现滑页效果
先上图,手指在手机向左或者向右滑就可以实现相应的页面切换. 先看activity_main.xml文件,非常简单,主要是三个标题TextView和viewpager <?xml version= ...
随机推荐
- HIToj--1076--Ordered Fractions(水题)
Ordered Fractions Source : Unknown Time limit : 3 sec Memory limit : 32 M Submitted : 1510, Ac ...
- centos 7.3 配置vnc 服务 图形界面登录
1.检查系统是否有安装tigervnc-server软件包 rpm -qa |grep vnc 默认的系统未装tigervnc-server软件包 2.安装tigervnc-server软件包 yum ...
- 130.C++经典面试题 52-100
- 图解RHEL6从安装光盘中进行yum安装
图解RHEL6从安装光盘中进行yum安装 导读:我们这里讲的Yum,是Yellow dog Updater, Modified的缩写,可执行程序名为yum,它的理念是使用一个中心仓库(reposito ...
- ES6特性-带标签的模板字符串(tagged template)
tagged template: 加在模板字符串前面加一个标签(函数). let dessert = = '甜品' drink = '茶' let breakfast = kitchen`今天的早餐是 ...
- PHP获取文件大小
通过filesize函数可以取得文件的大小,文件大小是以字节数表示的. $filename = '/data/webroot/usercode/code/resource/test.txt'; $si ...
- zoj1942Frogger
Frogger Time Limit: 2 Seconds Memory Limit: 65536 KB Freddy Frog is sitting on a stone in the m ...
- Effective C++ Item 38 通过复合塑模出 has-a 或 is-implemented-in-terms-of
本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:在应用域,复合意味着 has-a. 在实现域.复合意味着 is-implemented ...
- 改动GDAL库支持RPC像方改正模型
近期在做基于RPC的像方改正模型.方便对数据进行測试,改动了GDAL库中的RPC纠正模型,使之能够支持RPC像方改正參数. 以下是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...
- 2017国家集训队作业[agc004f]Namori
2017国家集训队作业[agc004f]Namori 题意: 给你一颗树或环套树,树上有\(N\)个点,有\(M\)条边.一开始,树上的点都是白色,一次操作可以选择一条端点颜色相同的边,使它的端点颜色 ...