Android之智慧北京一
来源:互联网 发布:linux 查看mysql服务 编辑:程序博客网 时间:2024/06/02 19:47
Android之智慧北京一
公司的角色
- 产品:搜集用户的需求,将需求转化为功能,将功能转化为用户体验(产品汪)
- 技术:实现产品提出的需求
- 测试:检测技术实现的功能
- 运营:对产品进行运营维护
- 销售:卖产品
研发流程
- 需求分析: 写需求文档
- 原型设计:
- 时间估算:
- 迭代开发:
- 阶段测试:
- 准备渠道:
代码规范
- 如何去导入和新建代码格式化(code formator)
- 如何去写注释模板(comments template)
欢迎界面
- 动画的实现:
- 旋转
- 缩放
- 透明渐变动画
- 动画的监听
引导页面
- ViewPager数据的添加
- PagerAdapter的使用
- 监听的几个方法(onPagerScrolled,onPagerSelected,onPagerStateChange)
- 静态点的添加
- LayoutParams的使用
- 动态点的移动
- 距离的计算
- LayoutParams的使用
- xml样式
- drawable的selector样式
- color的selector的样式
- shape的写法
主页的实现
github网站的使用
- 网站:https://github.com/
- 语言的过滤Java,点赞的过滤
- 英文搜索关键字
slidingMenu的介绍
- 导入开源库
- 让activity 继承 SlidingxxxxActivity,将onCreate 改为public
slidngMenu常用的api
/** * 点击菜单栏图标关闭菜单,若关闭着点击就打开 */private void toggleSetMenu(){ //获取上下文取得菜单实例:点击菜单,若菜单打开就关闭,关闭就打开 MainUIActivity ui=(MainUIActivity) mContext; SlidingMenu menu=ui.getSlidingMenu(); menu.toggle();} /** * 设置menu是否可见即是否能否侧滑 * @param enable */public void setSlindingMenu(boolean enable){ MainUIActivity mainui=(MainUIActivity) mActivity; SlidingMenu menu=mainui.getSlidingMenu(); menu.setTouchModeAbove(enable ? SlidingMenu.TOUCHMODE_FULLSCREEN:SlidingMenu.TOUCHMODE_NONE);}
mvc的思想
- Mode : 数据
- View : 显示的视图
- controller : 控制器
关系:
controller 负责和mode以及View进行通讯,用来管理调用mode和view
主页MainUIActivity的实现
/* *@描述:主界面添加--------------主页和左侧菜单-------------- */public class MainUIActivity extends SlidingFragmentActivity { private final static String TAG_CONTENT="content"; //主页 private final static String TAG_LEFT_MENU="left_menu"; //左侧 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //取消标题 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置内容区域 setContentView(R.layout.activity_mainui); //设置behind部分 setBehindContentView(R.layout.main_left); //获得SlidingMenu的实例 SlidingMenu menu=getSlidingMenu(); //设置模式 menu.setMode(SlidingMenu.LEFT); //指定的是菜单的边缘到屏幕边缘的距离 menu.setBehindOffset(180); //菜单的区域宽度 //menu.setBehindWidth(100); menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); //加载fragment的方式加载页面 initFragment(); } private void initFragment() { FragmentManager fm=getSupportFragmentManager(); //开启事务 FragmentTransaction transaction=fm.beginTransaction(); //添加主页fragmeng transaction.replace(R.id.main_container, new ContentFragment(), TAG_CONTENT); //添加左侧fragmeng transaction.replace(R.id.main_left, new LeftFragment(), TAG_LEFT_MENU); transaction.commit(); } /** * 获取左侧菜单 */ public LeftFragment getLeftFragment() { FragmentManager fm=getSupportFragmentManager(); return (LeftFragment) fm.findFragmentByTag(TAG_LEFT_MENU); } /** * 获得当前的实例Fragment * @return */ public ContentFragment getContentFragment() { FragmentManager fm=getSupportFragmentManager(); return (ContentFragment) fm.findFragmentByTag(TAG_CONTENT); }}
左滑菜单的实现
*@描述:左侧菜单 */ public class LeftFragment extends BaseFragment implements OnItemClickListener { public static final String TAG = "LeftFragment"; private List<NewCenterMenuListBean> mMenuData; //菜单对应的数据 private ListView listview; private int mCurrent; private NewsMenuAdapter menuAdapter; @Override protected View initView() { /* TextView tv=new TextView(mActivity); tv.setText("菜单内容"); return tv;*/ /** * 设置侧滑菜单的样式 */ listview = new ListView(mActivity); listview.setBackgroundColor(Color.BLACK);//设置背景色为黑色 listview.setDividerHeight(0); //去掉分割线 listview.setPadding(0, 50, 0,0); listview.setCacheColorHint(Color.TRANSPARENT); listview.setSelector(android.R.color.transparent); return listview; } /** * 设置菜单数据 * @param mMenuData */ public void setMenuData(List<NewCenterMenuListBean> datas) { //设置默认选中的第一个item this.mCurrent=0; //数据的接收 this.mMenuData=datas; menuAdapter = new NewsMenuAdapter(); //数据展示---adapter---list listview.setAdapter(menuAdapter); //设置listview条目的点击事件 listview.setOnItemClickListener(this); } //listview适配器 class NewsMenuAdapter extends BaseAdapter{ @Override public int getCount() { if(mMenuData!=null){ return mMenuData.size(); } return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null){ //没有复用时 convertView=View.inflate(mActivity, R.layout.newsmenu, null); } TextView tv=(TextView) convertView.findViewById(R.id.news_menu); String title=mMenuData.get(position).title; tv.setText(title); //判断么默认中下的 /*if(mCurrent==position){ tv.setEnabled(true); } else{ tv.setEnabled(false); }*/ tv.setEnabled(mCurrent==position?true:false); return tv; } } /** * listview的条目的点击事件 */ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //不做处理 if(mCurrent==position){ return; } //1、选中对应的项 this.mCurrent=position; //UI更新 menuAdapter.notifyDataSetChanged(); //2、收起菜单 MainUIActivity mainui=(MainUIActivity) mActivity; mainui.getSlidingMenu().toggle(); //3、右侧内容区域的改变 ContentFragment contentFra=mainui.getContentFragment(); contentFra.switchMenuPager(mCurrent); } }
抽取相同的内容成为基类:
*@描述:父类容器BaseFragment,集成了相似的内容 */public abstract class BaseFragment extends Fragment { public Activity mActivity; @Override public void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.mActivity=getActivity(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return initView(); } @Override public void onActivityCreated( Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //加载数据 initData(); } protected void initData() { } //留给子类去具体实现 protected abstract View initView();}
主页内容区域的实现:
*@描述:这是加载页面内容的容器,用来管理tab的切换内容 */public class ContentFragment extends BaseFragment implements OnCheckedChangeListener { public static final String tag = "ContentFragment"; @ViewInject(R.id.content_pager) //viewPager private NoTouchViewPager mPager; @ViewInject(R.id.content_tab_rad) //底部容器 private RadioGroup mRadioGroup; private List<TabBasePager> mList; //显示内容 显示页面 private int checkCurrentId; @Override protected View initView() { View view1= View.inflate(mActivity, R.layout.content, null); //ViewUtils工具的注入 ViewUtils.inject(this, view1); return view1; } @Override protected void initData() { //初始化数据 mList=new ArrayList<TabBasePager>(); //加载数据TODO 添加主页面viewpager mList.add(new TabHomePager(mActivity)); mList.add(new TabNewCenterPager(mActivity)); mList.add(new TabSmasterservicePager(mActivity)); mList.add(new TabGovPager(mActivity)); mList.add(new TabSettingPager(mActivity)); //加载数据 mPager.setAdapter(new ViewPagerAdapter()); //设置RadioGroup的点击事件 mRadioGroup.setOnCheckedChangeListener(this); //给RadioGroup设置默认值 mRadioGroup.check(R.id.tab_home); checkCurrentId = 0; } //viewpager的的适配器 class ViewPagerAdapter extends PagerAdapter{ //返回集合大小 @Override public int getCount() { if(mList!=null){ return mList.size(); } return 0; } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } //销毁一个页卡 @Override public void destroyItem(ViewGroup container, int position, Object object) { Log.i(tag, "销毁的是第"+position+"个页面"); container.removeView((View) object); } //实例化一个页卡 @Override public Object instantiateItem(ViewGroup container, int position) { Log.i(tag, "加载的是第"+position+"个页面"); TabBasePager pager=mList.get(position); View view=pager.getRootView(); //viewpager需要存放视图 container.addView(view); //给页面控制器加载数据 pager.initData(); return view; } } /** * 将五个页面分别和下面五个tab关联起来 */ @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch(checkedId){ case R.id.tab_home: checkCurrentId=0; setSlindingMenu(false); break; case R.id.tab_news: checkCurrentId=1; setSlindingMenu(true); break; case R.id.tab_smaster: checkCurrentId=2; setSlindingMenu(true); break; case R.id.tab_gov: checkCurrentId=3; setSlindingMenu(true); break; case R.id.tab_setting: checkCurrentId=4; setSlindingMenu(false); break; } //给viewpager设置选中的页面 mPager.setCurrentItem(checkCurrentId); } /** * 设置menu是否可见即是否能否侧滑 * @param enable */ public void setSlindingMenu(boolean enable){ MainUIActivity mainui=(MainUIActivity) mActivity; SlidingMenu menu=mainui.getSlidingMenu(); menu.setTouchModeAbove(enable ? SlidingMenu.TOUCHMODE_FULLSCREEN:SlidingMenu.TOUCHMODE_NONE); } /** * 改变菜单对应的显示页面 * @param mCurrent */ public void switchMenuPager(int position) { //获得显示切换的实例 TabBasePager tabPager=mList.get(checkCurrentId); //调用切换菜单显示主页的内容区域 tabPager.switchMenuPager(position); }}
0 0
- Android之智慧北京一
- Android之智慧北京二
- Android智慧北京之轮播图与下拉、上拉刷新
- 智慧北京之堆栈溢出
- Android智慧北京项目总结
- 智慧北京项目总结(一)
- 智慧北京
- Android 项目实战:智慧北京(黑马)
- Android 项目实战:智慧北京(黑马)
- android项目智慧北京开发完整步骤:第一天
- android项目智慧北京开发完整步骤:第二天
- android项目智慧北京开发完整步骤:第三天
- 智慧北京---笔记
- 智慧北京2
- 智慧北京3
- 智慧北京4
- 智慧北京5
- 项目1------智慧北京
- <a>标签的href和onclick属性
- Vm Ubuntu 文件共享问题
- LeetCode | Sort Colors
- 树的直径(模板)
- poj2286The Rotation Game题解(IDA*)
- Android之智慧北京一
- Java 单链表操作
- 例行python统计日志编写流程
- mysql分页处理策略
- 实时通讯之Socket.io
- setInterval
- 解决yii2框架中时区的设置问题
- Groovy中文文档——闭包
- Powermock and sonar jacoco的覆盖率不兼容问题解决 3