引导页效果

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

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值