day56_实战项目智慧北京第02天

01_第二阶段开发:自定义不能滑动ViewPager

帧布局的好处就是给一个全新的画板,里面的完全是空的,可以任意去放任何组件

 

 

继承viewpager,禁止page滑动

02_设置界面是否能滑动出左侧菜单

 

03_添加按钮事件来控制左侧菜单的显示或关闭

 

左侧菜单属于mainActivity的一部分,而导航按钮属于main_content_menu的一部分

 

04_Viewpager的懒加载

 

 

 

测试程序顶格写,方便删除

 

05_第三阶段需求:开发左侧菜单和对应的空页面

 

 

 

06_获取服务器的json数据并通过Gson解析(省略)

 

 

07_左侧菜单数据的获取和显示

 

08_左侧菜单的listview的显示和事件处理

 

 

09_通过点击左侧菜单切换新闻中心的四个页面

 

目前只有第一个博客首页可以真正实现左侧菜单的切换

 

 

10_通过接口回调实现左侧菜单控制新闻中心页面的切换

 

 

11_第三开发阶段的总结

 

 

第三阶段

1.获取数据

   http://10.0.2.2:8080/zhbj/categories.json

2.设置左侧菜单的显示和数据

1.显示
					


					采用ListView

             //listview显示左侧菜单
					

            lv_leftData = new ListView(mainActivity);

            //背景是黑色
					

            lv_leftData.setBackgroundColor(Color.BLACK);

 

            //选中拖动的背景色
					设置成透明
					

            lv_leftData.setCacheColorHint(Color.TRANSPARENT);

 

            //设置选中时为透明背景
					

            lv_leftData.setSelector(new ColorDrawable(Color.TRANSPARENT));

 

            //没有分割线
					

            lv_leftData.setDividerHeight(0);

 

            //距顶部为45px

            lv_leftData.setPadding(0, 45, 0, 0);

 2.条目显示
					


					采用TextView

 

        <TextView xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:padding="10dip"

        android:text="新闻"

        android:enabled="false"

        android:textColor="@color/leftmenu_list_item_tv_color"

        android:drawablePadding="10dip"

        android:layout_marginLeft="10dip"

        android:drawableLeft="@drawable/leftmenu_list_item_tv_drawable"

        android:textSize="20sp" >

 

 

    </TextView>

 3. 数据适配器
					

         @Override

            public View getView(int position, View convertView, ViewGroup parent) {

                //显示数据
					

                TextView tv_currentView;

                if (convertView == null) {

                    tv_currentView = (TextView) View.inflate(mainActivity, R.layout.leftmenu_list_item, null);

                } else {

                    tv_currentView = (TextView) convertView;

                }

 

                //设置数据
					

                tv_currentView.setText(data.get(position).title);

 

                //判断是否被选中
					

                tv_currentView.setEnabled(position == selectPosition);

 

                return tv_currentView;

            }

4. 设置listview选择事件
					

      //设置listview的选择事件
					

        lv_leftData.setOnItemClickListener(new OnItemClickListener() {

 

            @Override

            public void onItemClick(AdapterView<?> parent, View view,

                    int position, long id) {

                //保存选中的位置
					

                selectPosition = position;

 

                //更新界面
					

                adapter.notifyDataSetChanged();

 

                //控制新闻中心,四个新闻页面的显示
					

                //mainActivity.getMainMenuFragment().leftMenuClickSwitchPage(selectPosition);

                if (switchListener != null) {

                    switchListener.switchPage(selectPosition);

                } else {

                    mainActivity.getMainMenuFragment().leftMenuClickSwitchPage(selectPosition);

                }

 

 

                //切换SlidingMenu的开关
					

                mainActivity.getSlidingMenu().toggle();

 

            }

        });

  1. 新闻中心的四个页面的设计首先页面的基类 protected MainActivity mainActivity ; protected View root;//根布局 public BaseNewsCenterPage(MainActivity mainActivity) { this.mainActivity = mainActivity; root = initView(); initEvent(); }
  2.     /**
    
  3.      * 子类覆盖此方法完成事件的处理
    							
  4.      */
    
  5.     public void initEvent(){
    
  6.  
  7.     }
    
  8.  
  9.     /**
    
  10.      * 子类覆盖此方法来显示自定义的View
    
  11.      * @return
    
  12.      */
    
  13.     public abstract View initView();
    
  14.  
  15.     public View getRoot(){
    
  16.         return root;
    
  17.     }
    
  18.  
  19.  
  20.     /**
    
  21.      * 子类覆盖此方法完成数据的显示
    							
  22.      */
    
  23.     public void initData(){
    
  24.  
  25.     }
    

    创建四个页面,一个为例: public class PhotosBaseNewsCenterPage extends BaseNewsCenterPage {

            public PhotosBaseNewsCenterPage(MainActivity mainActivity) {
    

                super(mainActivity);
    

                // TODO Auto-generated constructor stub
    

            }
    

     

            @Override
    

            public View initView() {
    

                TextView tv = new TextView(mainActivity);
    

                tv.setText("组图的内容");
    

                tv.setTextSize(25);
    

                tv.setGravity(Gravity.CENTER);
    

                return tv;
    

            }
    

     

        }
    

    4.新闻中心数据处理

      1.解析json数据
    							

      2. 给左侧菜单设置数据
    							

      3. 设置页面选择的方法
    							

      4. 设置监听回调
    							

      5. 通过MainActivity切换页面
    							

     

     

    12_第四阶段开发功能分析

    13_新闻中心页面的实现(采用ViewPagerIndicator开源框架)

     

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值