package com.miris.ui.activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.miris.R;
import com.miris.net.SessionPreferences;
import com.miris.ui.comp.CirclePageIndicator;
import com.miris.ui.comp.ColorShades;
/**
* Created by Miris on 09.02.15.
*/
public class IntroActivity extends BaseActivity {
private static final String SAVING_STATE_SLIDER_ANIMATION = "SliderAnimationSavingState";
private boolean isSliderAnimation = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window = getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
setContentView(R.layout.activity_intro_base);
session = new SessionPreferences(getApplicationContext());
setshortcut();
Button btnLogin = (Button) findViewById(R.id.btn_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
session.setIntro(true);
Intent intent = new Intent(getApplicationContext(), SignInActivity.class);
intent.putExtra("intro", false);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
finish();
startActivity(intent);
}
});
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new ViewPagerAdapter(R.array.icons, R.array.titles, R.array.hints));
CirclePageIndicator mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
mIndicator.setViewPager(viewPager);
viewPager.setPageTransformer(true, new CustomPageTransformer());
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(final int position, float positionOffset, int positionOffsetPixels) {
View landingBGView = findViewById(R.id.landing_backgrond);
int colorBg[] = getResources().getIntArray(R.array.landing_bg);
ColorShades shades = new ColorShades();
shades.setFromColor(colorBg[position % colorBg.length])
.setToColor(colorBg[(position + 1) % colorBg.length])
.setShade(positionOffset);
landingBGView.setBackgroundColor(shades.generate());
}
public void onPageSelected(int position) {
}
public void onPageScrollStateChanged(int state) {
}
});
}
public class ViewPagerAdapter extends PagerAdapter {
private int iconResId, titleArrayResId, hintArrayResId;
public ViewPagerAdapter(int iconResId, int titleArrayResId, int hintArrayResId) {
this.iconResId = iconResId;
this.titleArrayResId = titleArrayResId;
this.hintArrayResId = hintArrayResId;
}
@Override
public int getCount() {
return getResources().getIntArray(iconResId).length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Drawable icon = getResources().obtainTypedArray(iconResId).getDrawable(position);
String title = getResources().getStringArray(titleArrayResId)[position];
String hint = getResources().getStringArray(hintArrayResId)[position];
View itemView = getLayoutInflater().inflate(R.layout.viewpager_item, container, false);
ImageView iconView = (ImageView) itemView.findViewById(R.id.landing_img_slide);
TextView titleView = (TextView)itemView.findViewById(R.id.landing_txt_title);
TextView hintView = (TextView)itemView.findViewById(R.id.landing_txt_hint);
iconView.setImageDrawable(icon);
titleView.setText(title);
hintView.setText(hint);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((RelativeLayout) object);
}
}
public class CustomPageTransformer implements ViewPager.PageTransformer {
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
View imageView = view.findViewById(R.id.landing_img_slide);
View contentView = view.findViewById(R.id.landing_txt_hint);
View txt_title = view.findViewById(R.id.landing_txt_title);
if (position < -1) {
} else if (position <= 0) {
setTranslationX(view,pageWidth * -position);
if (contentView != null) {
// But swipe the contentView
setTranslationX(contentView,pageWidth * position);
setTranslationX(txt_title,pageWidth * position);
setAlpha(contentView,1 + position);
setAlpha(txt_title,1 + position);
}
if (imageView != null) {
setAlpha(imageView,1 + position);
}
} else if (position <= 1) {
setTranslationX(view, pageWidth * -position);
if (contentView != null) {
setTranslationX(contentView,pageWidth * position);
setTranslationX(txt_title,pageWidth * position);
setAlpha(contentView, 1 - position);
setAlpha(txt_title, 1 - position);
}
if (imageView != null) {
setAlpha(imageView,1 - position);
}
}
}
}
private void setAlpha(View view, float alpha) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && ! isSliderAnimation) {
view.setAlpha(alpha);
}
}
private void setTranslationX(View view, float translationX) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB && ! isSliderAnimation) {
view.setTranslationX(translationX);
}
}
public void onSaveInstanceState(Bundle outstate) {
if(outstate != null) {
outstate.putBoolean(SAVING_STATE_SLIDER_ANIMATION, isSliderAnimation);
}
super.onSaveInstanceState(outstate);
}
public void onRestoreInstanceState(Bundle inState) {
if(inState != null) {
isSliderAnimation = inState.getBoolean(SAVING_STATE_SLIDER_ANIMATION,false);
}
super.onRestoreInstanceState(inState);
}
private void setshortcut() {
try {
PackageManager pm = this.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);
int VERSION = packageInfo.versionCode;
int old_Ver = session.getShortcut();
if (old_Ver < VERSION) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shortcutIntent.setClassName(this, "com.miris.ui.activity.SignInActivity");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
getResources().getString(R.string.app_name));
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher));
intent.putExtra("duplicate", false);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);
session.setShortcut(VERSION);
}
} catch (Exception e) {
}
}
}