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);
}
}
网友评论