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;
	}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值