自定义对话框,使弹出的对话框变为Viewpager加tab显示。

简述需求说明:

在一个app第一次打开时或者点击提示帮助的时候,会调用此对话框,对话框是自己重写的Dialog类,此对话框可以点击tab切换页面,也可以左右滑动实现viewpager效果,多的不说,还是看代码吧!

自定义的dialog类:

import android.app.Dialog;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by csdn on 2015/10/20.
 */
public class myDialog extends Dialog {

    private ViewPager mPager;
    //Tab页面表
    private List<View> listViews;
    //动画图片
    private ImageView cursor;
    //页卡头标
    private TextView t1, t2, t3;
    //动画图片的偏移量
    private int offset = 0;
    //当前卡页的编号
    private int currIndex = 0;
    //动画图片的宽度
    private int bmpW;


    public myDialog(Context context) {
        super(context);
    }

    public myDialog(Context context, int theme) {
        super(context, theme);
    }

    protected myDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mydialog);

        InitImageView();
        InitTextView();
        InitViewPager();

//        t.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                Toast.makeText(getContext(), "额外", Toast.LENGTH_SHORT).show();
//            }
//        });


        TextView ok = (TextView) findViewById(R.id.textView);
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
    }


    /**
     * 初始化动画
     */
    private void InitImageView() {

        cursor = (ImageView) findViewById(R.id.cursor);
        //图片的宽度
        bmpW = BitmapFactory.decodeResource(getWindow().getContext().getResources(), R.drawable.a).getWidth();

        DisplayMetrics dm = new DisplayMetrics();
        getWindow().getWindowManager().getDefaultDisplay().getMetrics(dm);
        //分辨率的宽度
        int screenW = dm.widthPixels;

        offset = (screenW / 3 - bmpW) / 2;
        Matrix matrix = new Matrix();
        matrix.postTranslate(offset, 0);
        cursor.setImageMatrix(matrix);
    }

    /**
     * 初始化ViewPager     */
    private void InitViewPager() {
        mPager = (ViewPager) findViewById(R.id.vPager);
        listViews = new ArrayList<View>();
        LayoutInflater mInflar = getLayoutInflater();
        listViews.add(mInflar.inflate(R.layout.lay1, null));
        listViews.add(mInflar.inflate(R.layout.lay2, null));
        listViews.add(mInflar.inflate(R.layout.lay3, null));
        mPager.setAdapter(new MyPageAdapter(listViews));

        mPager.setCurrentItem(0);
        t1.setBackgroundResource(R.drawable.btn_bigblue_h);
        t2.setBackgroundResource(R.drawable.btn_bigblue_n);
        t3.setBackgroundResource(R.drawable.btn_bigblue_n);
        mPager.setOnPageChangeListener(new MyOnPageChangeListener());
    }

    /**
     * 初始化头标
     */
    private void InitTextView() {
        t1 = (TextView) findViewById(R.id.text1);
        t2 = (TextView) findViewById(R.id.text2);
        t3 = (TextView) findViewById(R.id.text3);

        t1.setOnClickListener(new MyOnClickListener(0));
        t2.setOnClickListener(new MyOnClickListener(1));
        t3.setOnClickListener(new MyOnClickListener(2));
    }


    private class MyOnClickListener implements View.OnClickListener {
        private int index = 0;


        public MyOnClickListener(int i) {
            index = i;

        }

        @Override
        public void onClick(View v) {

            mPager.setCurrentItem(index);

        }
    }


    private class MyOnPageChangeListener implements ViewPager.OnPageChangeListener {
        //页面从12
        int one = offset * 2 + bmpW;
        //页面1 3
        int two = one * 2;


        @Override
        public void onPageSelected(int arg0) {

            Animation animation = null;

            Toast.makeText(getContext(), "" + arg0, Toast.LENGTH_SHORT).show();

            switch (arg0) {
                case 0:
                    t1.setBackgroundResource(R.drawable.btn_bigblue_h);
                    t2.setBackgroundResource(R.drawable.btn_bigblue_n);
                    t3.setBackgroundResource(R.drawable.btn_bigblue_n);
                    if (currIndex == 1) {
                        //animation = new TranslateAnimation(one, 0, 0, 0);

                    } else if (currIndex == 2) {

                        //  animation = new TranslateAnimation(two, 0, 0, 0);
                    }
                    break;
                case 1:
                    t1.setBackgroundResource(R.drawable.btn_bigblue_n);
                    t2.setBackgroundResource(R.drawable.btn_bigblue_h);
                    t3.setBackgroundResource(R.drawable.btn_bigblue_n);
                    if (currIndex == 0) {

                        //  animation = new TranslateAnimation(offset, one, 0, 0);
                    } else if (currIndex == 2) {

                        // animation = new TranslateAnimation(two, one, 0, 0);
                    }
                    break;
                case 2:
                    t1.setBackgroundResource(R.drawable.btn_bigblue_n);
                    t2.setBackgroundResource(R.drawable.btn_bigblue_n);
                    t3.setBackgroundResource(R.drawable.btn_bigblue_h);
                    if (currIndex == 0) {

                        //  animation = new TranslateAnimation(offset, two, 0, 0);

                    } else if (currIndex == 1) {

                        //animation = new TranslateAnimation(one, two, 0, 0);
                    }
                    break;

            }

            currIndex = arg0;
            animation.setFillAfter(true);
            animation.setDuration(300);
            cursor.startAnimation(animation);


        }

        @Override
        public void onPageScrolled(int i, float v, int i1) {

        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    }

    /**
     * ViewPager的适配器
     */
    public class MyPageAdapter extends PagerAdapter {
        public List<View> mLisetViews;

        public MyPageAdapter(List<View> mLisetViews) {
            this.mLisetViews = mLisetViews;
        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView(mLisetViews.get(arg1));

        }

        @Override
        public void finishUpdate(View arg0) {
        }

        @Override
        public int getCount() {
            return mLisetViews.size();
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == (arg1);
        }

        @Override
        public Object instantiateItem(View arg0, int arg1) {
            ((ViewPager) arg0).addView(mLisetViews.get(arg1), 0);
            return mLisetViews.get(arg1);
        }

        @Override
        public void restoreState(Parcelable state, ClassLoader loader) {

        }

        @Override
        public Parcelable saveState() {
            return null;
        }

        @Override
        public void startUpdate(View container) {

        }
    }

}
点击DIALOG按钮进入
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值