[android] 新闻客户端实现左侧导航点击切换
设置主布局文件,为根布局设置一个id,作为内容区
给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文
当前的Fragment实现OnItemClickListener接口
实现onItemClick()方法
switch判断一下当前菜单的索引位置,根据索引来实例化不同的Fragment对象
调用getActivity()方法,得到宿主Activity对象,这个activity暴露一个方法,替换fragment
使用关键字instances of判断getActivity()得到的是MainActivity类的实例
调用宿主Activity对象的switchMenuFragment()方法,切换内容部分的fragment,参数:Fragment对象
宿主activity暴露方法switchMenuFragment(),切换内容区fragment,参数:Fragment对象
getSupportFragmentManager().beginTransaction().replace(R.id.ll_main_content, fragment).commit();
调用SlidingMenu对象的toggle()方法,关闭左侧菜单
设置默认,当app第一次打开时显示导航第一个的内容
MainActivity
package com.qingguow.news; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.Window; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.qingguow.news.fragment.IndexFragment;
import com.qingguow.news.fragment.MenuFragment; public class MainActivity extends SlidingFragmentActivity {
private SlidingMenu sm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置滑动菜单
setBehindContentView(R.layout.menu);
setContentView(R.layout.activity_main);
sm=getSlidingMenu();
sm.setMode(SlidingMenu.LEFT);
sm.setBehindWidth(200);
sm.setShadowDrawable(R.drawable.shape);
sm.setShadowWidth(5);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
//替换导航fragemnt
MenuFragment menuFragment=new MenuFragment();
ft.replace(R.id.ll_left_menu, menuFragment);
//替换内容fragment
IndexFragment index=new IndexFragment();
ft.replace(R.id.ll_main_content, index).commit(); }
/**
* 暴露方法切换内容区
* @param fragment
*/
public void switchMenuFragment(Fragment fragment){
getSupportFragmentManager().beginTransaction().replace(R.id.ll_main_content, fragment).commit();
sm.toggle();
}
}
MenuFragment.java
package com.qingguow.news.fragment; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView; import com.qingguow.news.MainActivity;
import com.qingguow.news.R; public class MenuFragment extends Fragment implements OnItemClickListener {
private View view;
//加载布局文件
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.list_view, null);
return view;
}
//设置listview数据
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView listview = (ListView) view.findViewById(R.id.lv_menu); List<String> data=new ArrayList<String>();
data.add("新闻");
data.add("发现");
data.add("关注");
ListAdapter adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1,
data);
listview.setAdapter(adapter);
listview.setOnItemClickListener(this); }
/**
* 导航点击
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Fragment fragment=null;
switch (position) {
case 0:
fragment=new IndexFragment();
break; default:
break;
}
if(fragment!=null){
Activity activity=getActivity();
if(activity instanceof MainActivity){
((MainActivity) activity).switchMenuFragment(fragment);
}
}
}
}
[android] 新闻客户端实现左侧导航点击切换的更多相关文章
- 开源:我的Android新闻客户端,速度快、体积小、支持离线阅读、操作简便、内容展现形式丰富多样、信息量大、功能全面 等(要代码的留下邮箱)
分享:我的Android新闻客户端,速度快.体积小.支持离线阅读.操作简便.内容展现形式丰富多样.信息量大.功能全面 等(要代码的留下邮箱) 历时30天我为了开发这个新闻客户端APP,以下简称觅闻 h ...
- Ace教你一步一步做Android新闻客户端(四) 优化Bitmap大法
我计划着把需要用到的知识分解开来写,趁着我们要开发这款客户端的机会把安卓所有移动客户端开发中的技术贯穿其中,也是我自己成长的过程.By Ace in 20160121 我们开发一款新闻客户端程序,它的 ...
- Ace教你一步一步做Android新闻客户端(一)
复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...
- [android] 新闻客户端引入SlidingMenu
下载SlidingMenu,https://github.com/jfeinstein10/SlidingMenu 导入library 我们项目右键==>Properties==>Andr ...
- Ace教你一步一步做Android新闻客户端(五) 优化Listview
今天写存货了 调试一些动画参数花了些时间 ,嘿嘿存货不多了就没法做教程了,今天来教大家优化listview,等下我把代码编辑下 这次代码有些多 所以我把条理给大家理清楚.思路就是把加载图片的权利交给O ...
- Ace教你一步一步做Android新闻客户端(三) JSON数据解析
对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,现在给大家讲解一下json这个知识点, 1 如何通过json-lib和gson这两个json解析库来对解析我们的j ...
- [android] 新闻客户端主界面部分
当我们使用activity加fragment的时候,每个界面都要建立一个fragment,每个fragment里面都要重写onCreate(),onCreateView(),onActivityCre ...
- 阿冰教你一步一步做Android新闻客户端(二)两种异步线程加载图片的方法
哈哈哈抱着没人看的心态随便写,直接上代码,各位看官看注释 一种Thread 一种AsyncTask 先不说用框架 public class ImageLoader { private ImageVi ...
- android新闻App源码、仿微信源码、地图音乐源码等
Android精选源码 一款实用的休闲类App,新闻视频和技术应有尽有. android实现交互式K线图表源码 android新闻客户端和服务器源码 android MatetialDesign设计 ...
随机推荐
- 3.怎样将ASP.NET MVC应用程序发布到IIS
这一篇,教大家怎么将ASP.NET MVC应用程序发布到本地或者IIS中.打开上一篇创建的ASP.NET MVC 5.0应用程序.[PS:上一篇--->2.第一个ASP.NET MVC 5.0应 ...
- 迁移桌面程序到MS Store(4)——桌面程序调用Win10 API
上一篇我们讨论了如何在转制的桌面程序中,通过StartupTask来实现转制版本的开机自启动.实际操作中,我们通过编辑Packaging工程中的Package.appxmanifest文件,来添加自启 ...
- 简单题(K-D Tree)
简单题不简单-- 我们把单点加操作改成插入一个权值为增加量的点,将问题转化成询问一个矩阵中所有点的和,用 \(K-D\ Tree\) 维护,时间复杂度 \(O(n\sqrt{n})\) \(Code\ ...
- ssh登录时在参数中加入密码的解决方案
在使用ssh登录远程服务器的时候,在执行完ssh user@ip后,要输入登录密码,有时候登录密码记不住,这样以来Ian带来的很多的麻烦,有没有一种在ssh的参数中直接加入密码的方法呢?查看ssh的帮 ...
- jQuery的ajax的post请求json格式无法上传空数组
问题描述:在和后端对接时,使用jquery的ajax的post方式向后端传递一序列约定好格式的对象数组.遇到了一个现象:如果对象中的数组是空数组,那么在请求参数中是不会出现的. 以下是数据的对比: ...
- python进程——生产者消费者
生产者消费者模型介绍 为什么要使用生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完 ...
- [LeetCode] 两数相加
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
- SQL SERVICE 拆分字符串的表值函数
SQL代码 ALTER FUNCTION [dbo].[SplitToTable]( @SplitString nvarchar(max), @Separator nvarchar(10)=' ')R ...
- bigdata-02-hadoop2.8.4-resourceHA安装
1, 电脑环境准备 1), 关闭selinux vim /etc/selinux/config SELINUX=disabled 2), 时间同步 yum -y install chrony 修改时间 ...
- JS脚本动态给元素/控件添加事件
最近突然要用到JS脚本动态给元素添加事件.如TextBox的onclick事件.但有的onclick事件原先已经定义了相应代码!这里又不能替代原有方法,而JS脚本里面有个方法可以给控件在原有事件的基础 ...