菜鸟--Adroid学习之法律咨询客户端二

来源:互联网 发布:stc单片机哪个系列好用 编辑:程序博客网 时间:2024/04/29 05:04

在开始编写代码之前我先整理一下代码大致的结构:

MainActivity

if(FirstInstall)

Welcome_Fragment(ViewPager)

else

Loading_Fragment

主要代码:

MainActivity.java

public classMainActivity extends FragmentActivity {

 

   private FragmentManagermanager;

   private static final String LOG_INFO ="log_info";

   private static final String IS_SHOW_WELCOME ="showwelcome";

   //private boolean isActivityDestory = false;

   @Override

   protected void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      //获得一个FragmentManager实例

      manager =getSupportFragmentManager();

      //不启用欢迎界面时,将启动界面,替换为转换动画,并显示

      if(!isShowWelcome()){

         //beginTransaction开始一个事务

         manager.beginTransaction()

         //添加一个转换动画.就像是幻灯片里的各个篇幅之间转换是的动作。

         .setCustomAnimations(R.anim.ui_slide_intop,0)

         //添加一个fragmentActivity

         .add(R.id.main_layout_content,newWelcome())

         //提交事务

         .commit();

         Log.i(LOG_INFO,"welcome");

      }else{

         initLawyerMain();

      }

   }

  

   /**

    * 加载主页面

    *

    */

   public void initLawyerMain(){

      manager.beginTransaction()

            .setCustomAnimations(R.anim.ui_slide_inright,

                   R.anim.ui_slide_outleft)

            .replace(R.id.main_layout_content,newLoading()).commit();

//设置一个倒计时CountDownTimer

      //第一个参数为倒计时的时间,

      //第二个参数为间隔时间(把它当成计时单位来理解)

      newCountDownTimer(5000,1000) {

        

         @Override

         public void onTick(long millisUntilFinished) {

            // TODO Auto-generated method stub

           

         }

        

         @Override

         public void onFinish() {

            // TODO Auto-generated method stub

            //判断网络连接状态

            if(!checkInternet()){

               

                Toast.makeText(getApplication(),"网络连接异常!",

                      Toast.LENGTH_SHORT).show();

            }

            //避免在倒计时的过程中View意外关闭

            if (isActivityDestory){

                return;

            }

            manager.beginTransaction()

                .setCustomAnimations(R.anim.ui_slide_inright,

                   R.anim.ui_slide_outleft)

                .replace(R.id.main_layout_content,newLawyerMain(),

                      "lawyermain").commitAllowingStateLoss();

            //commitAllowingStateLoss()用于提交可以被丢掉的情况

            //replace中的第三个参数,是个Tag方便以后查找到该Fragment

         }

      }.start();

   }

   /**

    * 判断是否启动Welcome界面

    * @return

    */

   private boolean isShowWelcome(){

     

      //SharedPreferences 一种轻型的数据存储方式

      SharedPreferencespreferences = getSharedPreferences(IS_SHOW_WELCOME,

            MODE_PRIVATE);

      boolean showWelcome =preferences.getBoolean(IS_SHOW_WELCOME,false);

      if(!showWelcome){

        

         preferences.edit().putBoolean(IS_SHOW_WELCOME,true).commit();

      }

      return showWelcome;

   }  

   //判断网络连接状况

   private booleancheckInternet() {

      // TODO Auto-generated method stub

      ConnectivityManagerconnectivityManager = (ConnectivityManager)this.

            getSystemService(CONNECTIVITY_SERVICE);

      NetworkInfonetworkInfo = connectivityManager.getActiveNetworkInfo();

      if(networkInfo !=null){

        

         return true;

      }

      return false;

   }

   @Override

   protected void onDestroy() {

      // TODO Auto-generated method stub

     

      isActivityDestory= true;

      //对用户的登录信息进行的操作

      GetUserUtils.deleteUserLocation(this);

      super.onDestroy();

   }

   @Override

   public voidonBackPressed() {

      // TODO Auto-generated method stub

      if(manager.findFragmentByTag("lawyermain")!=null

            &&manager.getBackStackEntryCount()== 0){

         dailogBulider().show();

      }else{

         super.onBackPressed();  

      }

   }

   //AlertDialog警告对话框

   private AlertDialogdailogBulider() {

      // TODO Auto-generated method stub

      AlertDialog.Builderbuilder = newAlertDialog.Builder(this);

      builder.setTitle("提示").setMessage("确认退出吗?")

      .setPositiveButton("确认",newOnClickListener() {

        

         @Override

         public void onClick(DialogInterfacearg0, intarg1) {

            // TODO Auto-generated method stub

            MainActivity.this.finish();

         }

      }).setNegativeButton("取消",null).setCancelable(true);

      return builder.create();  

   }

}

Welcome.java

public classWelcome extendsFragmentimplementsOnClickListener {

    

   //ViewPager想Lancher一样实现左右滑动

   private ViewPagerwelcomeViewPeper;

   //imageView顾名思义图片视图

   private ImageView[]imageViews =new ImageView[3];

   private static final int[] imgRes = {R.drawable.default01,

      R.drawable.default02,R.drawable.default03};

  

   @Override

   public void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

   }

  

   @Override

   public void onAttach(Activityactivity){

     

      super.onAttach(activity);

      initImgs(activity);

   }

  

   /**

    * 初始化imageViews中的view

    *

    * @param context

    */

   @SuppressWarnings("deprecation")

   public void initImgs(Contextcontext){

     

      for(int i=0;i<imageViews.length;i++){

        

         imageViews[i] = new ImageView(context);

   //初始化imageView

         imageViews[i].setLayoutParams(new LayoutParams(

                LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

         imageViews[i].setScaleType(ScaleType.FIT_CENTER);

         imageViews[i].setBackgroundDrawable(getResources().getDrawable(

                imgRes[i]));

      }

   //响应Loading_fragment

      imageViews[2].setOnClickListener(this);

   }

  

   @Override

   public ViewonCreateView(LayoutInflater inflater, ViewGroup container,

         BundlesavedInstanceState){

     

      welcomeViewPeper = (ViewPager)inflater.inflate(R.layout.welcome_fragment,

            container,false);

      welcomeViewPeper.setAdapter(new WelcomeAdapter());

      return welcomeViewPeper;

   }

  

   class WelcomeAdapterextends PagerAdapter{

     

      @Override

      public int getCount() {

         // TODO Auto-generated method stub

         return 3;

      }

 

      @Override

      public boolean isViewFromObject(Viewarg0, Object arg1) {

         // TODO Auto-generated method stub

         return arg0 == arg1;

      }

     

      @Override

      public void destroyItem(ViewGroupcontainer,intposition,Object object){

        

         container.removeView(imageViews[position]);

      }

     

      @Override

      public ObjectinstantiateItem(ViewGroup container,int position){

        

         container.addView(imageViews[position]);

         returnimageViews[position];

      }

   }

  

   @Override

   public void onClick(View v) {

      // TODO Auto-generated method stub

      ((MainActivity)getActivity()).initLawyerMain();

   }

 

}

public classWelcome extendsFragmentimplementsOnClickListener {

 

   private ViewPagerwelcomeViewPeper;

   private ImageView[]imageViews =new ImageView[3];

   private static final int[] imgRes = {R.drawable.default01,

      R.drawable.default02,R.drawable.default03};

  

   @Override

   public void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

   }

  

   @Override

   public void onAttach(Activityactivity){

     

      super.onAttach(activity);

      initImgs(activity);

   }

  

   /**

    * 初始化imageViews中的view

    *

    * @param context

    */

   @SuppressWarnings("deprecation")

   public void initImgs(Contextcontext){

     

      for(int i=0;i<imageViews.length;i++){

        

         imageViews[i] = new ImageView(context);

         imageViews[i].setLayoutParams(new LayoutParams(

                LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

         imageViews[i].setScaleType(ScaleType.FIT_CENTER);

         imageViews[i].setBackgroundDrawable(getResources().getDrawable(

                imgRes[i]));

      }

      imageViews[2].setOnClickListener(this);

   }

  

   @Override

   public ViewonCreateView(LayoutInflater inflater, ViewGroup container,

         BundlesavedInstanceState){

     

      welcomeViewPeper = (ViewPager)inflater.inflate(R.layout.welcome_fragment,

            container,false);

      welcomeViewPeper.setAdapter(new WelcomeAdapter());

      return welcomeViewPeper;

   }

  

   class WelcomeAdapterextends PagerAdapter{

     

      @Override

      public int getCount() {

         // TODO Auto-generated method stub

         return 3;

      }

 

      @Override

      public boolean isViewFromObject(Viewarg0, Object arg1) {

         // TODO Auto-generated method stub

         return arg0 == arg1;

      }

     

      @Override

      public void destroyItem(ViewGroupcontainer,intposition,Object object){

        

         container.removeView(imageViews[position]);

      }

     

      @Override

      public ObjectinstantiateItem(ViewGroup container,int position){

        

         container.addView(imageViews[position]);

         returnimageViews[position];

      }

   }

   @Override

   public void onClick(View v) {

      // TODO Auto-generated method stub

      ((MainActivity)getActivity()).initLawyerMain();

   }

}

Loading.java

public classLoading extendsFragment{

 

   @Override

   public void onCreate(BundlesavedInstanceState){

     

      super.onCreate(savedInstanceState);

   }

   @Override

   public ViewonCreateView(LayoutInflater inflater, ViewGroup container,

         BundlesavedInstanceState){

     

      Viewview = inflater.inflate(R.layout.loading_fragment, container,

            false);

      return view;

   }

}

总结一下,之前欢迎界面,所接触到的技术:

在选择显示窗口的时候,选用了Fragment.。Fragment有以下特点:

Fragment

该案例中Welcome.java和Loading.java就是嵌套在MainActivity中Fragment。

在MainActivity调用Welcome时使用到了转场动画。

Animation

在Welcome中使用到了ViewPager

ViewPager

在从欢迎界面跳转到LawyerMain界面时候判断了一下网络连接状况。使用到了CountDownTimer 和 ConnectivityManager

CountDownTimer

ConnectivityManager

tip:在判断网络连接的时候,要在Mainfest.xml中加上<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在返回键的处理上使用到了AlertDialog

AlertDialog

0 0
原创粉丝点击