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

新闻客户端一

效果图:

  

一般新闻客户端都用到了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 = new ArrayList<String>();

		listdata.add("Fragment1");
		listdata.add("fragment2");
		listdata.add("Fragment3");
		return listdata;

	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int postion,
			long id) {
		Fragment f = null;
		switch (postion) {

		case 0:
			f = new Fragment1();
			break;
		case 1:
			f = new Fragment2();
			break;
		case 2:
			f = new Fragment3();
			break;

		default:
			break;
		}

		switchFragment(f);

	}

	public void switchFragment(Fragment f) {
		if (f != null) {
			if (getActivity() instanceof MainActivity) {
				((MainActivity) getActivity()).switchFragment(f);
			}
		}

	}
}</span>
<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>

时间: 2024-08-03 02:51:28

教你一步步编写新闻客户端一的相关文章

Android(java)学习笔记205:网易新闻客户端应用编写逻辑过程

1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0.使用RSS订阅能更快地获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新.网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容. 例如如下的网易RSS订阅: 2.由于我们这

Ace教你一步一步做Android新闻客户端(一)

复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和新手引导 软件侧滑菜单 滑动主页的GUI篇 一个内容解析篇. 代码里有很详细的注释 所以直接放代码了 有不会的站内信或者评论我会及时回复. MainActivity XML :只有一个ListView布局 <?xml version="1.0" encoding="utf-

ActionBar+DrawerLayout实现网易新闻客户端首页

一.概述 随着android版本的不断的更新,google推出了越来越多的高级组件,采用这些官方组件我们可以方便的实现一些以前需要通过复杂编码或者使用第三方组件才能实现的效果,比如slidingmenu.sherlockactionbar等.在这里,我们通过使用android的官方组件ActionBar和DrawerLayout来实现网易新闻客户端首页的效果. 由于ActionBar和DrawerLayout都是后来推出的,如果需要兼容低版本必须在项目中添加v7支持库.具体如何添加支持库在此不做

Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签

之前用JakeWharton的开源框架ActionBarSherlock和ViewPager实现了对网易新闻客户端Tab标签的功能,ActionBarSherlock是在3.0以下的机器支持ActionBar的功能,有兴趣的可以看看开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端,今天用到的是JakeWharton的另一开源控件ViewPageIndicator,ViewPager想必大家都知道,Indicator指示器的意思,所以ViewPageIndica

Toolbar+DrawerLayout高仿网易新闻客户端

首先看效果图,网易新闻客户端的特点是双向侧滑,并且左上角的图标会随着菜单的侧滑会有动画效果. 我们采用Toolbar和DrawerLayout实现双向侧滑以及actionbar 在菜单文件里先定义菜单 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools=&q

Android应用经典主界面框架之二:仿网易新闻客户端、CSDN 客户端 (Fragment ViewPager)

第二种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表,使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View,而是Fragment.所以适配器不能继承PagerAdapter,而要继承FragmentPagerAdapter,这是在android.support.v4.app.FragmentPagerAdapter包里的.有点奇葩的是,FragmentPagerAdapter只在这个包里有,在android.app.*这个包下面么

RecyclerView---高仿网易新闻客户端

本文将使用RecyclerView,带领大家实现类似网易新闻客户端的Tab界面效果. 先贴上效果图: 关于RecyclerView的基本使用大家可以参考鸿洋的文章:http://blog.csdn.net/lmj623565791/article/details/45059587 好的,下面进入本文主题... 添加依赖包 build.gradle compile 'com.android.support:recyclerview-v7:23.2.1' 实现界面布局 首先,可以看到每一个Tab有一

Android 开源框架ActionBarSherlock 和 ViewPager 仿网易新闻客户端

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9971721 大家都知道Android的ActionBar是在3.0以上才有的,那么在3.0以下呢,google并没有给我提供在3.0以下支持ActionBar的包,但是外国的大牛JakeWharton实现了在3.0以下使用ActionBar, JakeWharton这位大牛是ActionBarSherlock,Android-ViewPagerIndicator ,NineOldAn

一个基于Android系统的新闻客户端(一)

一.整体概述 在服务器端,通过对凤凰网的抓取存入数据库,客户端通过向服务器发送请求得到新闻. 服务端用WCF,宿主为window服务,客户端为Java写的安卓程序. 二.客户端 我在eclipse里新建了个Android项目,命名为MyNewClient,eclipse自动生成二个xml布局文件,如图: 其中,fragment_main.xml是新版的布局文件,暂时不会用,把它删掉. 新建xml文件,命名为activity_foot.xml,在这里我们要做app的底部,先上代码: <?xml v