Java tutorial
/* * This is the source code of Telegram for Android v. 1.3.2. * It is licensed under GNU GPL v. 2 or later. * You should have received a copy of the license in this archive (see LICENSE). * * Copyright Nikolai Kudashov, 2013. */ package demo.vicshady.classes.ui; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.FragmentActivity; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.text.Html; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import demo.vicshady.classes.R; import demo.vicshady.classes.utils.Utilities; public class IntroActivity extends FragmentActivity { private ViewPager viewPager; private ImageView topImage1; private ImageView topImage2; private ViewGroup bottomPages; private int lastPage = 0; private boolean justCreated = false; private boolean startPressed = false; private int[] icons; private int[] titles; private int[] messages; Button next, previous; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.intro_layout); if (Utilities.isRTL) { icons = new int[] { R.drawable.intro7, R.drawable.intro6, R.drawable.intro5, R.drawable.intro4, R.drawable.intro3, R.drawable.intro2, R.drawable.intro1 }; titles = new int[] { R.string.Page7Title, R.string.Page6Title, R.string.Page5Title, R.string.Page4Title, R.string.Page3Title, R.string.Page2Title, R.string.Page1Title }; messages = new int[] { R.string.Page7Message, R.string.Page6Message, R.string.Page5Message, R.string.Page4Message, R.string.Page3Message, R.string.Page2Message, R.string.Page1Message }; } else { icons = new int[] { R.drawable.intro1, R.drawable.intro2, R.drawable.intro3, R.drawable.intro4, R.drawable.intro5, R.drawable.intro6, R.drawable.intro7 }; titles = new int[] { R.string.Page1Title, R.string.Page2Title, R.string.Page3Title, R.string.Page4Title, R.string.Page5Title, R.string.Page6Title, R.string.Page7Title }; messages = new int[] { R.string.Page1Message, R.string.Page2Message, R.string.Page3Message, R.string.Page4Message, R.string.Page5Message, R.string.Page6Message, R.string.Page7Message }; } viewPager = (ViewPager) findViewById(R.id.intro_view_pager); TextView startMessagingButton = (TextView) findViewById(R.id.start_messaging_button); topImage1 = (ImageView) findViewById(R.id.icon_image1); topImage2 = (ImageView) findViewById(R.id.icon_image2); bottomPages = (ViewGroup) findViewById(R.id.bottom_pages); next = (Button) findViewById(R.id.next); previous = (Button) findViewById(R.id.previous); topImage2.setVisibility(View.GONE); viewPager.setAdapter(new IntroAdapter()); viewPager.setPageMargin(0); viewPager.setOffscreenPageLimit(1); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int i) { } @Override public void onPageScrollStateChanged(int i) { if (i == ViewPager.SCROLL_STATE_IDLE || i == ViewPager.SCROLL_STATE_SETTLING) { if (lastPage != viewPager.getCurrentItem()) { lastPage = viewPager.getCurrentItem(); final ImageView fadeoutImage; final ImageView fadeinImage; if (topImage1.getVisibility() == View.VISIBLE) { fadeoutImage = topImage1; fadeinImage = topImage2; } else { fadeoutImage = topImage2; fadeinImage = topImage1; } fadeinImage.bringToFront(); fadeinImage.setImageResource(icons[lastPage]); fadeinImage.clearAnimation(); fadeoutImage.clearAnimation(); Animation outAnimation = AnimationUtils.loadAnimation(IntroActivity.this, R.anim.icon_anim_fade_out); outAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { fadeoutImage.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); Animation inAnimation = AnimationUtils.loadAnimation(IntroActivity.this, R.anim.icon_anim_fade_in); inAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { fadeinImage.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } }); fadeoutImage.startAnimation(outAnimation); fadeinImage.startAnimation(inAnimation); } } } }); startMessagingButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (startPressed) { return; } startPressed = true; Intent intent2 = new Intent(IntroActivity.this, MainActivity.class); startActivity(intent2); finish(); } }); justCreated = true; // getSupportActionBar().hide(); } public void onNext(View v) { if (viewPager.getCurrentItem() == 5) { viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); next.setText("Finish"); } else if (viewPager.getCurrentItem() == 6 && next.getText().toString().equalsIgnoreCase("finish")) { Intent i = new Intent(getApplicationContext(), MainActivity.class); startActivity(i); finish(); } else { viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); next.setText("Next"); if (viewPager.getCurrentItem() > 0) previous.setVisibility(View.VISIBLE); else previous.setVisibility(View.INVISIBLE); } } public void onPrevious(View v) { viewPager.setCurrentItem(viewPager.getCurrentItem() - 1); next.setText("Next"); if (viewPager.getCurrentItem() == 0) previous.setVisibility(View.INVISIBLE); } @Override protected void onResume() { super.onResume(); if (justCreated) { if (Utilities.isRTL) { viewPager.setCurrentItem(6); lastPage = 6; } else { viewPager.setCurrentItem(0); lastPage = 0; } justCreated = false; } } private class IntroAdapter extends PagerAdapter { @Override public int getCount() { return 7; } @Override public Object instantiateItem(ViewGroup container, int position) { View view = View.inflate(container.getContext(), R.layout.intro_view_layout, null); TextView headerTextView = (TextView) view.findViewById(R.id.header_text); TextView messageTextView = (TextView) view.findViewById(R.id.message_text); container.addView(view, 0); headerTextView.setText(getString(titles[position])); messageTextView.setText(Html.fromHtml(getString(messages[position]))); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); int count = bottomPages.getChildCount(); for (int a = 0; a < count; a++) { View child = bottomPages.getChildAt(a); if (a == position) { child.setBackgroundColor(0xff2ca5e0); } else { child.setBackgroundColor(0xffbbbbbb); } } } @Override public boolean isViewFromObject(View view, Object object) { return view.equals(object); } @Override public void finishUpdate(View arg0) { } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } } }