引導頁效果

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) {

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章