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= ...
随机推荐
- JNI学习积累之二 ---- 数据类型映射、域描述符说明
本文原创,转载请注明出处:http://blog.csdn.NET/qinjuning 在Java存在两种数据类型: 基本类型 和 引用类型 ,大家都懂的 . 在JNI的世界里也存在类似的数据类型,与 ...
- matlab中plot画图参数的设置
原文链接:http://blog.sciencenet.cn/blog-281551-573856.html 一.Matlab绘图中用到的直线属性包括: (1)LineStyle:线形 (2)Line ...
- IDEA设置注释模板最佳实践
效果 在方法上输入/**,然后按tab键,生成的效果如下 配置步骤 1. 在Live Templates中添加模板组,命名随意,主要是为了存放自定义的模板,方便管理 2. 在模板组下添加一个模板,具体 ...
- Python环境搭建—安利Python小白的Python安装详细教程
人生苦短,我用Python.众所周知,Python目前越来越火,学习Python的小伙伴也越来越多.最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了 ...
- JS对浏览器Cookie的操作,查询、设置以及删除
JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的. 而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一 ...
- 洛谷 P1732 [TJOI2011]序列
P1732 [TJOI2011]序列 题目描述 一指数列A={a1, a2, …, an},根据数列A计算数列B={b1, b2, …, bn},其中: 求\sum\limits^n_{i=1} b_ ...
- bzoj1084【SCOI2005】最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1946 Solved: 970 [Submit][id ...
- CocoaPods制作
欢迎相同喜欢动效的工程师/UI设计师/产品添加我们 iOS动效特攻队–>QQ群:547897182 iOS动效特攻队–>熊熊:648070256 引言: 折腾了三四天,各种文章翻遍了,遇到 ...
- 【iOS开发-88】事件传递原理解释哪个控件处理事件以及响应者链条的介绍
一.触摸事件传递原理 (1)大的方向是:从父控件传递给子控件. --父控件会先检查自己能否接受事件的处理 --然后再看看触摸在不在自己的范围内 --假设在的话,就遍历子控件.看看有没有合适的子控件能够 ...
- Spring 配置文件头部xmls解析
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...