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) {
}
}
引导页效果
最新推荐文章于 2023-03-20 13:26:10 发布