您的位置:首页 > 其它

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

2017-12-25 19:45 351 查看

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();


 

}


});


新闻中心的四个页面的设计首先页面的基类 protected MainActivity mainActivity ;
protected View root;//根布局 public BaseNewsCenterPage(MainActivity mainActivity) { this.mainActivity = mainActivity; root = initView(); initEvent(); }

/**


* 子类覆盖此方法完成事件的处理


*/


public void initEvent(){


 

}


 

/**


* 子类覆盖此方法来显示自定义的View


* @return


*/


public abstract View initView();


 

public View getRoot(){


return root;


}


 

 

/**


* 子类覆盖此方法完成数据的显示


*/


public void initData(){


 

}


创建四个页面,一个为例: 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开源框架)

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: