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 }

 

posted @ 2013-05-08 17:01  闲人轩  阅读(1087)  评论(0编辑  收藏  举报