首页 > 代码库 > 教你一步步编写新闻客户端一

教你一步步编写新闻客户端一

                                                                 新闻客户端一

      效果图:

技术分享   技术分享


       一般新闻客户端都用到了SlidingMenu+Fragment+ViewPage这样一个综合的应用使得界面效果比较美观大方

好的我们一步步来实现上面的效果,首先是滑动菜单效果。在这里我们引入一个框架库,专门用于实现滑动菜单的开发库,通过这个库我们能很方便的制作各种滑动效果。

       1、新建一个工程,然后将SlidingMenu-master库引入到我们的工程项目中,引入方法如下图所示。

       技术分享

    注意:引入这个库后要把原工程中的android-support-v4.jar 架包删掉否则编译会出错,原因是引入的库中已经有了该架包,如果不删除原工程的这会产生冲突。

      2、在MainActivity中继承SlidingFragmentActivity

<span style="font-size:18px;">public class MainActivity extends SlidingFragmentActivity {

	private SlidingMenu sm;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setBehindContentView(R.layout.menu);
		setContentView(R.layout.content);

//		Fragment1 f = new Fragment1();
//
//		getSupportFragmentManager().beginTransaction().replace(R.id.content, f)
//				.commit();

		sm = getSlidingMenu();
		// 2 设置滑动菜单是在左边出来还是右边出来
		// 参数可以设置左边LEFT,也可以设置右边RIGHT ,还能设置左右LEFT_RIGHT
		sm.setMode(SlidingMenu.LEFT);
		// 3 设置滑动菜单出来之后,内容页,显示的剩余宽度
		sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
		// 4 设置滑动菜单的阴影 设置阴影,阴影需要在开始的时候,特别暗,慢慢的变淡
		sm.setShadowDrawable(R.drawable.shadow);
		// 5 设置阴影的宽度
		sm.setShadowWidth(R.dimen.shadow_width);
		// 6 设置滑动菜单的范围
		// 第一个参数 SlidingMenu.TOUCHMODE_FULLSCREEN 可以全屏滑动
		// 第二个参数 SlidingMenu.TOUCHMODE_MARGIN 只能在边沿滑动
		// 第三个参数 SlidingMenu.TOUCHMODE_NONE 不能滑动
		sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

		// 创建fragment
		MenuFragment menuFragment = new MenuFragment();
		// 获取fragment的管理者
		getSupportFragmentManager()
		// 开启事物
				.beginTransaction()
				// 替换
				.replace(R.id.menu_layout, menuFragment, "Menu")
				// 提交
				.commit();

		// 向右滑动
		// sm.setSecondaryMenu(R.layout.right_view);
		// sm.setSecondaryShadowDrawable(R.drawable.shadowright);
		// RightMenuFragment rightMenuFragment = new RightMenuFragment();
		// getSupportFragmentManager().beginTransaction().replace(R.id.right_view,
		// rightMenuFragment).commit();

		HomeFragment homeFragment = new HomeFragment();
		getSupportFragmentManager().beginTransaction()
				.replace(R.id.content, homeFragment, "home").commit();

	}

	// 方法回调
	public void switchFragment(Fragment f) {
		getSupportFragmentManager().beginTransaction().replace(R.id.content, f)
				.commit();
		// 自动切换
		sm.toggle();

	}

}</span>


MenuFragment.java,,通过它来切换界面


<span style="font-size:18px;">@SuppressLint("NewApi")
public class MenuFragment extends Fragment implements OnItemClickListener {

	private View view;

	private static final String tag = "MenuFragment";

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		Log.i(tag, "oncreate");
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		Log.i(tag, "onCreateView");
		view = inflater.inflate(R.layout.list_view, null);
		return view;
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		Log.i(tag, "onActivityCreated");

		ListView list = (ListView) view.findViewById(R.id.list_view);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_list_item_1, android.R.id.text1,
				initdata());
		list.setAdapter(adapter);
		list.setOnItemClickListener(this);

	}

	public List<String> initdata() {
		List<String> listdata = http://www.mamicode.com/new ArrayList();>
<span style="font-size:18px;">public class Fragment1 extends Fragment {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		
		TextView tv = new TextView(getActivity());
		tv.setText(Fragment1.class.getSimpleName());
		return tv;
	}
	
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
	}

}</span>

界面 menu

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent" 
     android:layout_height="match_parent"
     android:id="@+id/menu_layout">
    
    
</FrameLayout></span>

content

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/content"
    android:orientation="vertical" >
    

</FrameLayout></span>

技术分享






          

教你一步步编写新闻客户端一