android仿微信实现左右滑动切换页面;FragmentActivity的使用

package com.example.xxx;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NotificationCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.widget.PopupMenu;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class eqpt_main extends FragmentActivity implements View.OnClickListener{
	private ArrayList<Fragment> fragments;
	private ViewPager viewPager;
	private eqptViewPagerAdapter leadViewPagerAdapter;

//	private eqpt_E eqpt_E;
	private eqpt_A eqpt_A; 
	private eqpt_B eqpt_B;
	private eqpt_C_new eqpt_C;
	private eqpt_D eqpt_D;
	
	private LinearLayout l5,l1,l2,l3,l4;
	private ImageView test5,test1,test2,test3,test4;
	private TextView text5,text1,text2,text3,text4;
	private Button menu;
	
	public String jobString;
	private Context context;
	private long exitTime = 0;
	
	private String mTitles[] = {"保養本站設備", "保養記錄","填寫修理記錄", "維修記錄", "無"}; // "所有設備", 
	private TextView main_bar_left_title;
	
	private TextView tv_new_msg5, tv_new_msg1,tv_new_msg2,tv_new_msg3,tv_new_msg4;
	public String newString[][]=new String[90][3];
	public String estiString[][]=new String[90][3];
	public String comfirmString[][]=new String[90][3];
	public String reviewString[][]=new String[90][3];	
	public int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0;
	
	public boolean isFirstLoading; //是否第一次加载
	
//  上下文
    private Context mContext;	
    
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
        setContentView(R.layout.eqptmain);  //定义 Activity 界面的布局
        ExitApplication.getInstance().addActivity(this); //添加当前activity,以便退出APP
//      隐藏状态栏
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        mContext = eqpt_main.this;
        
      //第一次加载
	    isFirstLoading = true;
	    
        //登录页面过来的
        Intent intent=getIntent();//获取上一页面传过来的数据
        jobString=intent.getStringExtra("job");
        
        tv_new_msg5=(TextView) findViewById(R.id.tv_new_msg5); 
        tv_new_msg1=(TextView) findViewById(R.id.tv_new_msg1);    
        tv_new_msg2=(TextView) findViewById(R.id.tv_new_msg2); 
        tv_new_msg3=(TextView) findViewById(R.id.tv_new_msg3); 
        tv_new_msg4=(TextView) findViewById(R.id.tv_new_msg4);  
        
        main_bar_left_title=(TextView) findViewById(R.id.main_bar_left_title);
        menu=(Button) findViewById(R.id.menu);
        test5 = (ImageView) findViewById(R.id.test5);
        test1 = (ImageView) findViewById(R.id.test1);
        test2 = (ImageView) findViewById(R.id.test2);
        test3 = (ImageView) findViewById(R.id.test3);
        test4 = (ImageView) findViewById(R.id.test4);
        
        l5=(LinearLayout) findViewById(R.id.l5);
        l1=(LinearLayout) findViewById(R.id.l1);
        l2=(LinearLayout) findViewById(R.id.l2);
        l3=(LinearLayout) findViewById(R.id.l3);
        l4=(LinearLayout) findViewById(R.id.l4);
        
        //底部菜单的监听事件
        l5.setOnClickListener(this);
        l1.setOnClickListener(this);
        l2.setOnClickListener(this);
        l3.setOnClickListener(this);
        l4.setOnClickListener(this);
        
        text5=(TextView) findViewById(R.id.text5);
        text1=(TextView) findViewById(R.id.text1);
        text2=(TextView) findViewById(R.id.text2);
        text3=(TextView) findViewById(R.id.text3);
        text4=(TextView) findViewById(R.id.text4);
        
        text5.setText(mTitles[0]);
        text1.setText(mTitles[1]);
        text2.setText(mTitles[2]);
        text3.setText(mTitles[3]);
        text4.setText(mTitles[4]);
        
        viewPager = (ViewPager) findViewById(R.id.viewpager);
//        viewPager.setOffscreenPageLimit(0);// 设置缓存页面,当前页面的相邻N各页面都会被缓存--懒加载
//        Log.i(TAG, "緩存頁面數量=="+viewPager.getOffscreenPageLimit() );  //默認為1,即默認預加載當前頁面左右一頁
        
      //滑动页面监听事件
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public void onPageSelected(int arg0) {
				// TODO Auto-generated method stub				
				resetImg();    //将图片全部默认为不选中  
				 int currentItem = viewPager.getCurrentItem();  
	                switch (currentItem) {  
	                case 0:  
	                	viewPager.setCurrentItem(0);
	                	main_bar_left_title.setText(mTitles[0]);//设置页面标题
	                    test5.setImageResource(R.drawable.icon_pressed); 
	                    text5.setTextColor(Color.rgb(69,192,24));
	                    break;  
	                case 1:  
	                	viewPager.setCurrentItem(1);
	                	main_bar_left_title.setText(mTitles[1]);//设置页面标题
	                    test1.setImageResource(R.drawable.icon_pressed);  
	                    text1.setTextColor(Color.rgb(69,192,24));
	                    break;  
	                case 2:  
	                	viewPager.setCurrentItem(2);
	                	main_bar_left_title.setText(mTitles[2]);//设置页面标题
	                    test2.setImageResource(R.drawable.icon_pressed);  
	                    text2.setTextColor(Color.rgb(69,192,24));
	                    break;  
	                case 3:  
	                	viewPager.setCurrentItem(3);
	                	main_bar_left_title.setText(mTitles[3]);//设置页面标题
	                    test3.setImageResource(R.drawable.icon_pressed);  
	                    text3.setTextColor(Color.rgb(69,192,24));
	                    break;
	                case 4:  
	                	viewPager.setCurrentItem(4);
	                	main_bar_left_title.setText(mTitles[4]);//设置页面标题
	                    test4.setImageResource(R.drawable.icon_pressed);  
	                    text4.setTextColor(Color.rgb(69,192,24));
	                    break;
	                default:  
	                    break;  
	                } 
			}
			
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// TODO Auto-generated method stub
			}
			
			@Override
			public void onPageScrollStateChanged(int arg0) {
				// TODO Auto-generated method stub
			}
		});
        
        fragments = new ArrayList<Fragment>();
//        eqpt_E=new eqpt_E();
        eqpt_A=new eqpt_A();
        eqpt_B=new eqpt_B();
        eqpt_C=new eqpt_C_new();
        eqpt_D=new eqpt_D();
        
//        fragments.add(eqpt_E);
        fragments.add(eqpt_A); 
        fragments.add(eqpt_B); 
        fragments.add(eqpt_C);
        fragments.add(eqpt_D); 
        leadViewPagerAdapter = new eqptViewPagerAdapter(getSupportFragmentManager(), fragments);
        
//        使用 PageTransformer 自定义动画--缩小页面转换器
        viewPager.setPageTransformer(true, new ZoomOutPageTransformer());
        //初始化选中页面
        viewPager.setAdapter(leadViewPagerAdapter);
        viewPager.setCurrentItem(0);
        main_bar_left_title.setText(mTitles[0]);
        test5.setImageResource(R.drawable.icon_pressed);
        text5.setTextColor(Color.rgb(69,192,24));
        
        //右上角菜单项
        menu.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showPopupMenu(v);
			}
		});   
        
	}
	
	/**
	 * 将图标全部默认为不选中   
	 */
    private void resetImg() {  
    	test5.setImageResource(R.drawable.icon); 
        test1.setImageResource(R.drawable.icon);  
        test2.setImageResource(R.drawable.icon);  
        test3.setImageResource(R.drawable.icon);  
        test4.setImageResource(R.drawable.icon); 

        text5.setTextColor(Color.rgb(51,51,51));
        text1.setTextColor(Color.rgb(51,51,51));
        text2.setTextColor(Color.rgb(51,51,51));
        text3.setTextColor(Color.rgb(51,51,51));
        text4.setTextColor(Color.rgb(51,51,51));
   
    } 

    /**
	 * 右上角菜单项
	 */
	private void showPopupMenu(View view) {
        // 这里的view代表popupMenu需要依附的view
        PopupMenu popupMenu = new PopupMenu(mContext, view);
        // 获取布局文件
        popupMenu.getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());
        popupMenu.show();
        
        //设置菜单项是否显示
        popupMenu.getMenu().findItem(R.id.scan_eqpt).setVisible(true);
        
        // 通过上面这几行代码,就可以把控件显示出来了
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) { 
                // 控件每一个item的点击事件
            	int id = item.getItemId();
            	if(id == R.id.manage_eqpt) {
					Intent intent=new Intent(mContext,manage_main.class);
					intent.putExtra("job", jobString);
			        startActivity(intent);
				}
            	else if(id == R.id.update_pass) {
					Intent intent=new Intent(mContext,change_pass.class);
			        intent.putExtra("job", jobString);
			        startActivity(intent);
            	}
				else {
					Toast.makeText(mContext, "沒有該菜單頁", Toast.LENGTH_SHORT).show();
				}
                return true;
            }
        });
        popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener() {
            @Override
            public void onDismiss(PopupMenu menu) {
                // 控件消失时的事件
            }
        });
    }

	/**
	 * 点击转换页面时,变换图标--监听底部菜单事件
	 */
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub		
		switch (v.getId()) {
		case R.id.l5:
	    	  viewPager.setCurrentItem(0);
	    	  main_bar_left_title.setText(mTitles[0]);//设置页面标题
	    	  resetImg();    //将图片全部默认为不选中  
	    	  test5.setImageResource(R.drawable.icon_pressed);  //设置选中页面的图标
	    	  text5.setTextColor(Color.rgb(69,192,24));
	        break;
	      case R.id.l1:
	    	  viewPager.setCurrentItem(1);
	    	  main_bar_left_title.setText(mTitles[1]);//设置页面标题
	    	  resetImg();    //将图片全部默认为不选中  
	    	  test1.setImageResource(R.drawable.icon_pressed);  //设置选中页面的图标
	    	  text1.setTextColor(Color.rgb(69,192,24));
	        break;
	      case R.id.l2:
	    	  viewPager.setCurrentItem(2);
	    	  main_bar_left_title.setText(mTitles[2]);
	    	  resetImg();    //将图片全部默认为不选中  
	    	  test2.setImageResource(R.drawable.icon_pressed);
	    	  text2.setTextColor(Color.rgb(69,192,24));
	        break;
	      case R.id.l3:
	    	  viewPager.setCurrentItem(3);
	    	  main_bar_left_title.setText(mTitles[3]);
	    	  resetImg();    //将图片全部默认为不选中  
	    	  test3.setImageResource(R.drawable.icon_pressed);
	    	  text3.setTextColor(Color.rgb(69,192,24));
	        break;
	      case R.id.l4:
	    	  Toast.makeText(mContext, "該頁面暫無內容!", Toast.LENGTH_LONG).show();
//	    	  viewPager.setCurrentItem(4);
//	    	  main_bar_left_title.setText(mTitles[4]);
//	    	  resetImg();    //将图片全部默认为不选中  
//	    	  test4.setImageResource(R.drawable.icon_pressed);
//	    	  text4.setTextColor(Color.rgb(69,192,24));
	        break;
	    }
	}
    
	
	/**
	 * 双击2次返回键退出程序
	 */
	@Override
	public void onBackPressed() {
		if ((System.currentTimeMillis() - exitTime) > 2000) {
			Toast.makeText(mContext, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
			exitTime = System.currentTimeMillis();
		} 
		else {
			ExitApplication.getInstance().exit();
		}
	}
	
//    使用 PageTransformer 自定义动画--在相邻页面之间滚动时,该页面转换器会使页面收缩并淡出。随着页面越来越靠近中心,页面会恢复到正常大小并淡入。
    public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
        private static final float MIN_SCALE = 0.85f;
        private static final float MIN_ALPHA = 0.5f;

        public void transformPage(View view, float position) {
            int pageWidth = view.getWidth();
            int pageHeight = view.getHeight();

            if (position < -1) { // [-Infinity,-1)
                // This page is way off-screen to the left.
                view.setAlpha(0f);

            } else if (position <= 1) { // [-1,1]
                // Modify the default slide transition to shrink the page as well
                float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
                float vertMargin = pageHeight * (1 - scaleFactor) / 2;
                float horzMargin = pageWidth * (1 - scaleFactor) / 2;
                if (position < 0) {
                    view.setTranslationX(horzMargin - vertMargin / 2);
                } else {
                    view.setTranslationX(-horzMargin + vertMargin / 2);
                }

                // Scale the page down (between MIN_SCALE and 1)
                view.setScaleX(scaleFactor);
                view.setScaleY(scaleFactor);

                // Fade the page relative to its size.
                view.setAlpha(MIN_ALPHA +
                        (scaleFactor - MIN_SCALE) /
                        (1 - MIN_SCALE) * (1 - MIN_ALPHA));

            } else { // (1,+Infinity]
                // This page is way off-screen to the right.
                view.setAlpha(0f);
            }
        }
    }

    @Override
    protected void onDestroy() {
    	// TODO Auto-generated method stub
    	super.onDestroy();
//    	Log.i(TAG, "System.exit(0)  销毁所有资源,会把service同时销毁,定时任务被结束");
//    	System.exit(0);
    }
}

在这里插入图片描述


版权声明:本文为weixuan_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。