ViewPager加载Activity
1 package com.hengxun.moblietoken; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import com.hengxun.moblietoken.dao.Dao; 6 import com.hengxun.update.UpdateManager; 7 8 import android.R.color; 9 import android.app.Activity; 10 import android.app.AlertDialog; 11 import android.app.LocalActivityManager; 12 import android.content.Context; 13 import android.content.DialogInterface; 14 import android.content.Intent; 15 import android.os.Bundle; 16 import android.os.Parcelable; 17 import android.support.v4.view.PagerAdapter; 18 import android.support.v4.view.ViewPager; 19 import android.support.v4.view.ViewPager.OnPageChangeListener; 20 import android.view.Gravity; 21 import android.view.KeyEvent; 22 import android.view.LayoutInflater; 23 import android.view.View; 24 import android.view.Window; 25 import android.widget.RelativeLayout; 26 import android.widget.TabHost; 27 import android.widget.TabHost.OnTabChangeListener; 28 import android.widget.TextView; 29 30 /** 31 * 32 * @author veandy 33 * @version 1.0.0 34 * @2012-5-31 下午2:02:15 35 * 36 */ 37 public class ViewPagerActivity extends Activity { 38 39 /* list集合 */ 40 List<View> listViews; 41 /* 上下文对象 */ 42 Context context = null; 43 /* Activity对象 */ 44 LocalActivityManager manager = null; 45 /* 选项卡对象 */ 46 TabHost tabHost = null; 47 /* Viewpager...这个不会翻译 */ 48 private ViewPager pager = null; 49 50 @Override 51 protected void onCreate(Bundle savedInstanceState) { 52 super.onCreate(savedInstanceState); 53 requestWindowFeature(Window.FEATURE_NO_TITLE); 54 setContentView(R.layout.activity_view_pager); 55 56 context = ViewPagerActivity.this; 57 /* 实例化viewpager */ 58 pager = (ViewPager) findViewById(R.id.viewpager); 59 60 // 定放一个放view的list,用于存放viewPager用到的view 61 listViews = new ArrayList<View>(); 62 63 manager = new LocalActivityManager(this, true); 64 /* 这个state就是当前Activity的状态参数,就是onCreate(Bundle 65 savedInstanceState)里面这个savedInstanceState*/ 66 manager.dispatchCreate(savedInstanceState); 67 68 Intent i1 = new Intent(context, Token.class); 69 listViews.add(getView("A", i1)); 70 Intent i2 = new Intent(context, PlatformHelperActivity.class); 71 listViews.add(getView("B", i2)); 72 Intent i3 = new Intent(context, SystemActivity.class); 73 listViews.add(getView("C", i3)); 74 75 tabHost = (TabHost) findViewById(R.id.tabhost); 76 tabHost.setup(); 77 tabHost.setup(manager); 78 79 // 这儿主要是自定义一下tabhost中的tab的样式 80 RelativeLayout tabIndicator1 = (RelativeLayout) LayoutInflater.from( 81 this).inflate(R.layout.tabwidget, null); 82 final TextView tvTab1 = (TextView) tabIndicator1 83 .findViewById(R.id.tv_title); 84 tvTab1.setTextSize(16); 85 tvTab1.setText("密码验证"); 86 87 RelativeLayout tabIndicator2 = (RelativeLayout) LayoutInflater.from( 88 this).inflate(R.layout.tabwidget, null); 89 final TextView tvTab2 = (TextView) tabIndicator2 90 .findViewById(R.id.tv_title); 91 tvTab2.setTextSize(16); 92 tvTab2.setText("平台助手"); 93 94 RelativeLayout tabIndicator3 = (RelativeLayout) LayoutInflater.from( 95 this).inflate(R.layout.tabwidget, null); 96 final TextView tvTab3 = (TextView) tabIndicator3 97 .findViewById(R.id.tv_title); 98 tvTab3.setTextSize(16); 99 tvTab3.setText("设置"); 100 101 Intent intent = new Intent(context, TestActivity.class); 102 // 注意这儿Intent中的activity不能是自身 103 // 比如“A”对应的是T1Activity,后面intent就new的T3Activity的。 104 tabHost.addTab(tabHost.newTabSpec("A").setIndicator(tabIndicator1) 105 .setContent(intent)); 106 tabHost.addTab(tabHost.newTabSpec("B").setIndicator(tabIndicator2) 107 .setContent(intent)); 108 tabHost.addTab(tabHost.newTabSpec("C").setIndicator(tabIndicator3) 109 .setContent(intent)); 110 111 pager.setAdapter(new MyPageAdapter(listViews)); 112 113 tvTab1.setBackgroundDrawable(getResources().getDrawable( 114 R.drawable.button)); 115 tvTab1.setTextColor(getResources().getColor(color.black)); 116 tvTab1.setGravity(Gravity.CENTER); 117 tvTab2.setGravity(Gravity.CENTER); 118 tvTab3.setGravity(Gravity.CENTER); 119 120 UpdateManager manager1 = new UpdateManager(this); 121 manager1.checkUpdate(); 122 123 pager.setOnPageChangeListener(new OnPageChangeListener() { 124 public void onPageSelected(int position) { 125 // 当viewPager发生改变时,同时改变tabhost上面的currentTab 126 tabHost.setCurrentTab(position); 127 switch (position) { 128 case 0: 129 130 tvTab1.setBackgroundDrawable(getResources().getDrawable( 131 R.drawable.button)); 132 tvTab1.setTextColor(getResources().getColor(color.black)); 133 tvTab1.setGravity(Gravity.CENTER); 134 tvTab2.setTextColor(getResources().getColor(color.white)); 135 tvTab3.setTextColor(getResources().getColor(color.white)); 136 tvTab2.setBackgroundColor(000000); 137 tvTab3.setBackgroundColor(000000); 138 break; 139 case 1: 140 tvTab2.setBackgroundDrawable(getResources().getDrawable( 141 R.drawable.button)); 142 tvTab2.setTextColor(getResources().getColor(color.black)); 143 tvTab2.setGravity(Gravity.CENTER); 144 tvTab1.setTextColor(getResources().getColor(color.white)); 145 tvTab3.setTextColor(getResources().getColor(color.white)); 146 tvTab1.setBackgroundColor(000000); 147 tvTab3.setBackgroundColor(000000); 148 149 break; 150 case 2: 151 152 tvTab3.setBackgroundDrawable(getResources().getDrawable( 153 R.drawable.button)); 154 tvTab3.setTextColor(getResources().getColor(color.black)); 155 tvTab3.setGravity(Gravity.CENTER); 156 tvTab2.setTextColor(getResources().getColor(color.white)); 157 tvTab1.setTextColor(getResources().getColor(color.white)); 158 tvTab1.setBackgroundColor(000000); 159 tvTab2.setBackgroundColor(000000); 160 161 break; 162 163 default: 164 break; 165 } 166 167 } 168 169 public void onPageScrolled(int arg0, float arg1, int arg2) { 170 } 171 172 public void onPageScrollStateChanged(int arg0) { 173 } 174 }); 175 176 // 点击tabhost中的tab时,要切换下面的viewPager 177 tabHost.setOnTabChangedListener(new OnTabChangeListener() { 178 public void onTabChanged(String tabId) { 179 180 if ("A".equals(tabId)) { 181 pager.setCurrentItem(0); 182 } 183 if ("B".equals(tabId)) { 184 185 pager.setCurrentItem(1); 186 } 187 if ("C".equals(tabId)) { 188 pager.setCurrentItem(2); 189 } 190 } 191 }); 192 193 } 194 195 /** 196 * 退后键的监听 197 */ 198 @Override 199 public boolean onKeyDown(int keyCode, KeyEvent event) { 200 switch (keyCode) { 201 case KeyEvent.KEYCODE_BACK: 202 AlertDialog.Builder build = new AlertDialog.Builder(this); 203 build.setTitle("注意") 204 .setMessage("关键时刻你确定要退出吗?") 205 .setPositiveButton("确定", 206 new DialogInterface.OnClickListener() { 207 /** 208 * 用户点击确定后马上finish 209 */ 210 @Override 211 public void onClick(DialogInterface dialog, 212 int which) { 213 // Thread.interrupted(); 214 finish(); 215 216 } 217 }) 218 .setNegativeButton("取消", 219 new DialogInterface.OnClickListener() { 220 /** 221 * 用户点击取消不做任何动作 222 */ 223 @Override 224 public void onClick(DialogInterface dialog, 225 int which) { 226 227 } 228 }).show(); 229 break; 230 231 default: 232 break; 233 } 234 return false; 235 236 // return super.onKeyDown(keyCode, event); 237 238 } 239 240 @Override 241 protected void onDestroy() { 242 super.onDestroy(); 243 ((Dao) this.getApplication()).setBeginForWhile(false); 244 ((Dao) this.getApplication()).setBegin(false); 245 System.out.println(((Dao) this.getApplication()).isBeginForWhile()); 246 247 } 248 249 private View getView(String id, Intent intent) { 250 return manager.startActivity(id, intent).getDecorView(); 251 } 252 253 private class MyPageAdapter extends PagerAdapter { 254 255 private List<View> list; 256 257 private MyPageAdapter(List<View> list) { 258 this.list = list; 259 } 260 261 @Override 262 public void destroyItem(View view, int position, Object arg2) { 263 ViewPager pViewPager = ((ViewPager) view); 264 pViewPager.removeView(list.get(position)); 265 } 266 267 @Override 268 public void finishUpdate(View arg0) { 269 } 270 271 @Override 272 public int getCount() { 273 return list.size(); 274 } 275 276 @Override 277 public Object instantiateItem(View view, int position) { 278 ViewPager pViewPager = ((ViewPager) view); 279 pViewPager.addView(list.get(position)); 280 return list.get(position); 281 } 282 283 @Override 284 public boolean isViewFromObject(View arg0, Object arg1) { 285 return arg0 == arg1; 286 } 287 288 @Override 289 public void restoreState(Parcelable arg0, ClassLoader arg1) { 290 } 291 292 @Override 293 public Parcelable saveState() { 294 return null; 295 } 296 297 @Override 298 public void startUpdate(View arg0) { 299 } 300 301 } 302 303 }