package com.baozilichao.superone.activity;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.opengl.Visibility;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.baozilichao.superone.R;
import java.util.ArrayList;
import java.util.List;
public class First_Join extends Activity implements ViewPager.OnPageChangeListener {
List<View> list_image;//引導頁頁面list;
LinearLayout tip_viewGroup;//小圓點的list;在父佈局linearlayout的圓點組
ViewPager first_viewpager;
Button first_but;
int tips = 0;//小圓點的當前位置,初始爲0
View view1, view2, view3, view4;//引導頁
ImageView iv1, iv2, iv3, iv4;
AnimationDrawable animationDrawable1, animationDrawable2, animationDrawable3, animationDrawable4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_first_jion);
tip_viewGroup= (LinearLayout) findViewById(R.id.viewGroup);
initFour();
}
private static Bitmap small(Bitmap bitmap) {
Matrix matrix = new Matrix();
matrix.postScale(0.13f, 0.18f); //長和寬放大縮小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return resizeBmp;
}
private void initFour() {
list_image = new ArrayList<>();
LayoutInflater inflater = LayoutInflater.from(this);
view1 = inflater.inflate(R.layout.item1, null);
view2 = inflater.inflate(R.layout.item2, null);
view3 = inflater.inflate(R.layout.item3, null);
view4 = inflater.inflate(R.layout.item4, null);
iv1 = (ImageView) view1.findViewById(R.id.item1_iv);
iv2 = (ImageView) view2.findViewById(R.id.item2_iv);
iv3 = (ImageView) view3.findViewById(R.id.item3_iv);
iv4 = (ImageView) view4.findViewById(R.id.item4_iv);
//引導頁第一頁
animationDrawable1 = new AnimationDrawable();
for (int i = 1; i < 57; i++) {
int id = getResources().getIdentifier("reading_guide_" + i, "drawable", getPackageName());
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id);
Bitmap resizeBmp = small(bmp);
Drawable drawable = new BitmapDrawable(resizeBmp);
animationDrawable1.addFrame(drawable, 70);
}
Log.i("animationDrawable1", animationDrawable1.toString());
Log.i("iv1", iv1.toString());
iv1.setBackgroundDrawable(animationDrawable1);
animationDrawable1.setOneShot(true);
animationDrawable1.start();
// ================================================================
// 引導頁第二頁
animationDrawable2 = new AnimationDrawable();
for (int i = 1; i < 69; i++) {
int id = getResources().getIdentifier("music_guide_" + i, "drawable", getPackageName());
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id);
Bitmap resizeBmp = small(bmp);
Drawable drawable = new BitmapDrawable(resizeBmp);
animationDrawable2.addFrame(drawable, 70);
}
Log.i("animationDrawable1", animationDrawable2.toString());
Log.i("iv1", iv2.toString());
iv2.setBackgroundDrawable(animationDrawable2);
// ==============================================================
animationDrawable3 = new AnimationDrawable();
for (int i = 1; i < 64; i++) {
int id = getResources().getIdentifier("movie_guide_" + i, "drawable", getPackageName());
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id);
Bitmap resizeBmp = small(bmp);
Drawable drawable = new BitmapDrawable(resizeBmp);
animationDrawable3.addFrame(drawable, 70);
}
Log.i("animationDrawable1", animationDrawable3.toString());
Log.i("iv1", iv3.toString());
iv3.setBackgroundDrawable(animationDrawable3);
// ==============================================================
animationDrawable4 = new AnimationDrawable();
for (int i = 1; i < 95; i++) {
int id = getResources().getIdentifier("one_guide_" + i, "drawable", getPackageName());
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id);
Bitmap resizeBmp = small(bmp);
Drawable drawable = new BitmapDrawable(resizeBmp);
animationDrawable4.addFrame(drawable, 70);
}
Log.i("animationDrawable1", animationDrawable4.toString());
Log.i("iv1", iv4.toString());
iv4.setBackgroundDrawable(animationDrawable4);
list_image.add(view1);
list_image.add(view2);
list_image.add(view3);
list_image.add(view4);
first_viewpager = (ViewPager) findViewById(R.id.first_jion_viewpager);
first_viewpager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return list_image.size();
}
/**
* PagerAdapter的一個方法是instantiateItem(ViewGroup container, int
* position)該方法聲明瞭返回值不一定是view,可以是任意對象。
* 要知道view的添加是在該方法內部,通過container來添加的,所以這個方法不一定要返回view。
* 而isViewFromObject方法是用來判斷pager的一個view是否和instantiateItem方法返回的object有關聯
* ,如果有關聯做什麼呢?
* 去看代碼吧ViewPager源碼,你去看下addNewItem方法,會找到instantiateItem的使用方法
* ,注意這裏的mItems變量。
* 然後你再搜索下isViewFromObject,會發現其被infoForChild方法調用,返回值是ItemInfo。
* 再去看下ItemInfo的結構,其中有一個object對象,該值就是instantiateItem返回的。
* 也就是說,ViewPager裏面用了一個mItems(ArrayList)來存儲每個page的信息(ItemInfo),
* 當界面要展示或者發生變化時,需要依據page的當前信息來調整,但此時只能通過view來查找,
* 所以只能遍歷mItems通過比較view和object來找到對應的ItemInfo。 說的有些亂,好好看源碼就懂了!
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
// PagerAdapter只緩存三張要顯示的圖片,如果滑動的圖片超出了緩存的範圍,就會調用這個方法,將圖片銷燬
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(list_image.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(list_image.get(position));
return list_image.get(position);
}
});
for (int i = 0; i < list_image.size(); i++) {
ImageView imageview = new ImageView(this);
// 默認第一個頁面的小圓點爲選中狀態
if (i == 0) {
imageview.setImageResource(R.drawable.point_checked);
} else {
imageview.setImageResource(R.drawable.point_unchecked);
}
tip_viewGroup.addView(imageview);
}
first_but = (Button) findViewById(R.id.first_but);
first_but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(First_Join.this, MainActivity.class);
startActivity(intent);
finish();
}
});
first_viewpager.setOnPageChangeListener(this);
}
//OnPageChangeListener接口的方法
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position){
case 0:
animationDrawable1.setOneShot(true);
animationDrawable1.start();
break;
case 1:
animationDrawable2.setOneShot(true);
animationDrawable2.start();
break;
case 2:
animationDrawable3.setOneShot(true);
animationDrawable3.start();
break;
case 3:
animationDrawable4.setOneShot(true);
animationDrawable4.start();
first_but.setVisibility(View.VISIBLE);
break;
}
// 設置前一個選中的小圓點爲未選中狀態
ImageView iv1 = (ImageView) tip_viewGroup.getChildAt(tips);
iv1.setImageResource(R.drawable.point_unchecked);
// 設置當前選中的小圓點爲選中狀態
ImageView iv2 = (ImageView) tip_viewGroup.getChildAt(position);
iv2.setImageResource(R.drawable.point_checked);
tips = position;
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
引導頁效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.