android中,项目架构的搭建

来源:互联网 发布:人工智能5分钟演讲稿 编辑:程序博客网 时间:2024/05/21 21:44

一.首先搭建这个项目框架的时候需要关联两个库文件,分别是menu_library和xutillibrary。

二.现在把项目架构中需要建立的包展示如下:




























三.把搭建的项目架构展示如下:

































四.现在开始写具体实现这个效果的逻辑:

1.首先先把项目搭建的三个布局写出来:

a. activity_main.xml

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

    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
</FrameLayout>

b.frag_home.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <android.support.v4.view.ViewPager
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_weight="1"/>
    <RadioGroup
        android:id="@+id/main_radio"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_gravity="bottom"
        android:background="@drawable/bottom_tab_bg"
        android:gravity="center"
        android:orientation="horizontal"
        android:paddingTop="2dp">
        <RadioButton
            android:id="@+id/rb_function"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/icon_function"
            android:text="@string/tab_function"/>
        <RadioButton
            android:id="@+id/rb_news_center"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/icon_newscenter"
            android:text="@string/tab_news_center" />


        <RadioButton
            android:id="@+id/rb_smart_service"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/icon_smartservice"
            android:text="@string/tab_smart_service" />


        <RadioButton
            android:id="@+id/rb_gov_affairs"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/icon_govaffairs"
            android:text="@string/tab_gov_affairs" />


        <RadioButton
            android:id="@+id/rb_setting"
            style="@style/main_tab_bottom"
            android:drawableTop="@drawable/icon_setting"
            android:text="@string/tab_setting" />
    </RadioGroup>
    
</LinearLayout>

c.menu_frame

<?xml version="1.0" encoding="utf-8"?>
<!-- 侧拉栏Menu布局 -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    

</FrameLayout>

2.其次开始写逻辑:

a. BasePager.java

// BasePager的目的就是把ViewPager5张显示page的公共部分抽取出来,初始化视图和初始化数据

package com.saiermeng.jiagou.base;


import android.content.Context;
import android.view.View;


public abstract class BasePager {
public Context context;
public View view;
//private Object view;


public BasePager(Context context){
this.context=context;
view =initView();

}


/*private Object initView() {
// TODO Auto-generated method stub
return null;*/
public abstract View initView();
public abstract void initData();
public View getRootView(){
return view;
}
}

b. BaseFragment.java

//BaseFragment的目的就是把HomeFragment,MenuFragment的公共部分抽取出来,拿到上下文,初始化视图,初始化数据

package com.saiermeng.jiagou.base;


import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;



public abstract class BaseFragment extends Fragment {
     public Context context;
     private View view;
//private Object view;
//private FragmentActivity context;
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
//拿到上下文
    context=getActivity();
super.onCreate(savedInstanceState);
}
//初始化视图
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
  view=initView();
  return view;
 // super.onCreateView(savedInstanceState);
}
//初始化数据
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
initData();
super.onActivityCreated(savedInstanceState);
}
/*private void initData() {
// TODO Auto-generated method stub

}*/
/*private View initView() {
// TODO Auto-generated method stub
return null;
}*/
public  abstract View initView();
public abstract void initData();
//抽象方法的作用是,你在此类里不必实现它,只是一个虚方法,所有的实现可以到继承此类的子类里面去做.
       //你也可以理解为,抽象方法就是用来被重载的方法.你可以在子类里对它进行重载,也可以不进行重载.


}

c.HomeFragment.java

// HomeFragment的目的就是:1.点击哪个RadioButton,页面上显示对应的图片信息 2.把首页,新闻中心...添加到list集合中,通过Adapter显示出来

package com.saiermeng.jiagou.Fragment;


import java.util.ArrayList;


import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;


import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.saiermeng.jiagou.R;
import com.saiermeng.jiagou.base.BaseFragment;
import com.saiermeng.jiagou.base.BasePager;
import com.saiermeng.jiagou.pager.NewCenterPager;
import com.saiermeng.jiagou.pager.FunctionPager;
import com.saiermeng.jiagou.pager.GovAffairsPager;
import com.saiermeng.jiagou.pager.SettingPager;
import com.saiermeng.jiagou.pager.SmartServicePager;


public class HomeFragment extends BaseFragment {
    private ArrayList<BasePager> list=new ArrayList<BasePager>();
private View view;
    @ViewInject(R.id.layout_content)
    private ViewPager layout_content;
    @ViewInject(R.id.main_radio)
    private RadioGroup main_radio;


@Override
public View initView() {
// TODO Auto-generated method stub
//加载布局
view=View.inflate(context, R.layout.frag_home, null);
//绑定view操作通过注解去拿到控件的id
ViewUtils.inject(this, view);

main_radio.setOnCheckedChangeListener(new OnCheckedChangeListener(){


@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
// TODO Auto-generated method stub
switch(arg1){
case R.id.rb_function:
layout_content.setCurrentItem(0);
break;
case R.id.rb_news_center:
layout_content.setCurrentItem(1);
break;
case R.id.rb_smart_service:
layout_content.setCurrentItem(2);
break;
case R.id.rb_gov_affairs:
layout_content.setCurrentItem(3);
break;
case R.id.rb_setting:
layout_content.setCurrentItem(4);
break;
default:
break;

}

}

});
//你滑动的时候viewpager换页的操作
layout_content.setOnPageChangeListener(new OnPageChangeListener(){


@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}


@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}


@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
//
list.get(arg0).initData();


}

});
//默认的选中他(首页)
main_radio.check(R.id.rb_function);
return view;
}


@Override
public void initData() {
// TODO Auto-generated method stub
//初始化一下,保证这个list集合中的元素为空
list.clear();
list.add(new FunctionPager(context));
list.add(new NewCenterPager(context));
list.add(new SmartServicePager(context));
list.add(new GovAffairsPager(context));
list.add(new SettingPager(context));
layout_content.setAdapter(new MyAdapter());
}
public class MyAdapter extends PagerAdapter {



@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}


@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;

}


@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View)object);
}


@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(list.get(position).getRootView());
return  list.get(position).getRootView();
}


}


}

d.MenuFragment.java

/* MenuFragment 的目的就是加载侧拉栏里面的信息,因为它和HomeFragment一样,需要initView和initData,所以把它们的共同的部分抽取成BaseFragment让

MenuFragment和HomeFragment继承*/

package com.saiermeng.jiagou.Fragment;


import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BaseFragment;






public class MenuFragment extends BaseFragment {


@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("侧拉栏");
return textView;
}


@Override
public void initData() {
// TODO Auto-generated method stub

}



}

e.FunctionPager.java

package com.saiermeng.jiagou.pager;


import android.content.Context;
import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BasePager;


public class FunctionPager extends BasePager {


public FunctionPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}



@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("首页");
return textView;
}




@Override
public void initData() {
// TODO Auto-generated method stub


}


}

f.GovAffairsPager.java

package com.saiermeng.jiagou.pager;


import android.content.Context;
import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BasePager;


public class GovAffairsPager extends BasePager {


public GovAffairsPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("政务中心");
return textView;
}


@Override
public void initData() {
// TODO Auto-generated method stub


}


}

g. NewCenterPager.java

package com.saiermeng.jiagou.pager;


import android.content.Context;
import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BasePager;


public class NewCenterPager extends BasePager {


public NewCenterPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("新闻中心");
return textView;
}


@Override
public void initData() {
// TODO Auto-generated method stub

}


}

h.SettingPager .java

package com.saiermeng.jiagou.pager;


import android.content.Context;
import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BasePager;


public class SettingPager extends BasePager {


public SettingPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("设置中心");
return textView;
}


@Override
public void initData() {
// TODO Auto-generated method stub


}


}

i.SmartServicePager .java

package com.saiermeng.jiagou.pager;


import android.content.Context;
import android.view.View;
import android.widget.TextView;


import com.saiermeng.jiagou.base.BasePager;


public class SmartServicePager extends BasePager {


public SmartServicePager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}


@Override
public View initView() {
// TODO Auto-generated method stub
TextView textView = new TextView(context);
textView.setText("智慧服务");
return textView;
}


@Override
public void initData() {
// TODO Auto-generated method stub


}


}

j. MainActivity.java

package com.saiermeng.jiagou;


import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.saiermeng.jiagou.Fragment.HomeFragment;
import com.saiermeng.jiagou.Fragment.MenuFragment;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;


public class MainActivity extends SlidingFragmentActivity {


private SlidingMenu slidingMenu;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//加载布局
setContentView(R.layout.activity_main);
//加载布局
setBehindContentView(R.layout.menu_frame);
   //拿到SlidingMenu这个对象
slidingMenu=getSlidingMenu();
//设置的侧滑为左侧滑
slidingMenu.setMode(SlidingMenu.LEFT);
//设置左边侧滑的宽度
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//侧滑分界线的阴影部分
slidingMenu.setShadowDrawable(R.drawable.shadow);
//侧滑分界线阴影部分的宽度
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
//整个屏幕可以拖拽
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//拿到MenuFragment的对象
MenuFragment menuFragment = new MenuFragment();
 
//替换左侧帧布局操作
getSupportFragmentManager().beginTransaction().replace(R.id.menu, menuFragment, "Menu").commit();
//替换内容页的帧布局操作
//拿到HomeFragment的对象
HomeFragment homeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.layout_container, homeFragment, "Home").commit();
 

 

}




}

0 0
原创粉丝点击