package com.hellodev.lightme.activity; import com.hellodev.lightme.FlashController; import com.hellodev.lightme.R; import com.hellodev.lightme.util.CommonDataHelper; import com.hellodev.lightme.util.MDisplayHelper; import com.hellodev.lightme.util.MPreferenceManager; import com.hellodev.lightme.util.SmartBarUtils; import com.hellodev.lightme.view.GuidePagerAdapter; import com.hellodev.lightme.view.GuidePagerAdapter.OnGuideViewClickListener; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.Gravity; import android.view.View; import android.view.Window; import android.widget.ImageView; import android.widget.LinearLayout; public class GuideActivity extends Activity implements OnPageChangeListener, OnGuideViewClickListener { private final static String TAG = "GuideActivity"; private LinearLayout indexContainer; private ImageView[] indexImages; private ViewPager vpGuide; private GuidePagerAdapter pagerAdapter; private int[] IMG_RES = new int[] { R.drawable.guide_page_1, R.drawable.guide_page_2, R.drawable.guide_page_3 };//FIXME 异步加载为Drawable会快一些么 private final static int INDEX_IMG_SELECTED = R.drawable.guide_index_selected; private final static int INDEX_IMG_NORMAL = R.drawable.guide_index_normal; private MPreferenceManager prefsMgr; private MDisplayHelper displayer; public final static String KEY_FLAG_FROM = "from_activity"; private boolean fromSetting = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); fromSetting = SettingActivity.class.getName().equals( getIntent().getStringExtra(KEY_FLAG_FROM)); prefsMgr = MPreferenceManager.getInstance(); int apkVersion = CommonDataHelper.getCurrentAppVersionCode(this); int localVersion = prefsMgr.getVersionCode(); if (fromSetting) { setContentView(R.layout.activity_guide); initView(); initSmartBar(); } else if(apkVersion > localVersion) { requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_guide); initView(); initSmartBar(); initControlData(); } else { initControlData(); startMainActivity(); } } @Override protected void onDestroy() { super.onDestroy(); prefsMgr = null; if(pagerAdapter != null) pagerAdapter.release(); if(vpGuide != null) vpGuide.removeAllViews(); } //FIXME 宽高都应该写到xml中,然后可以直接getResource获取得到像素 private void initView() { displayer = new MDisplayHelper(); indexContainer = (LinearLayout) findViewById(R.id.index_container); indexImages = new ImageView[IMG_RES.length + 1]; LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); param.leftMargin = displayer.dpiToPx(2); param.rightMargin = displayer.dpiToPx(2); param.gravity = Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL; for (int i = 0; i <= IMG_RES.length; ++i) { indexImages[i] = new ImageView(this); indexContainer.addView(indexImages[i], param); } setSelectedIndexImage(0); vpGuide = (ViewPager) findViewById(R.id.vp_guide); vpGuide.setOnPageChangeListener(this); pagerAdapter = new GuidePagerAdapter(IMG_RES, fromSetting, this); vpGuide.setAdapter(pagerAdapter); } private void initSmartBar() { if (fromSetting) { SmartBarUtils.toogleActionBar(vpGuide, true); ActionBar actionBar = getActionBar(); actionBar.setDisplayOptions(0); SmartBarUtils.setActionBarViewCollapsable(actionBar, true); // 替换back键图标 SmartBarUtils.setBackIcon(actionBar, getResources().getDrawable(R.drawable.ic_back)); // 修改actionBar的背景 } else { SmartBarUtils.toogleActionBar(vpGuide, false); } } private void setSelectedIndexImage(int position) { for (int i = 0; i < indexImages.length; ++i) { indexImages[i] .setBackgroundResource(i == position ? INDEX_IMG_SELECTED : INDEX_IMG_NORMAL); } } private void initControlData() { FlashController.getInstance().initCameraSync(); if (prefsMgr.isSwitchSoundOn()) FlashController.getInstance().initSwitchSound(); } private void startMainActivity() { Intent intent = new Intent(this, MainActivity.class); startActivity(intent); finish(); } // arg0 ==1的时候表示正在滑动,arg0==2的时候表示滑动完毕了,arg0==0的时候表示什么都没做 // 三种状态的变化顺序为(1,2,0) @Override public void onPageScrollStateChanged(int state) { } // arg0 :当前页面,当前点击滑动的页面 // arg1:当前页面偏移的百分比 // arg2:当前页面偏移的像素位置 @Override public void onPageScrolled(int pos, float offsetRate, int offset) { } @Override public void onPageSelected(int currentPage) { setSelectedIndexImage(currentPage); } @Override public void onGuideViewClick(View view) { if (view.getId() == R.id.btn_start) { startMainActivity(); prefsMgr.setVersionCode(CommonDataHelper .getCurrentAppVersionCode(this)); } } }