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 }