偶然發現了一個AdapterViewFlipper類,是繼承自AdapterViewAnimator,發現這個類可以實現翻滾廣告那種效果。
廢話不多說,直接上效果:
這種效果還是很多地方需要的吧,比較主播頭像切換~哈哈哈~
下面直接上代碼,硬菜來啦:
- 佈局代碼:
<AdapterViewFlipper
android:id="@+id/id_image"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="100dp"
android:animateFirstView="true" <!--第一個默認顯示的view是否需要動畫-->
android:autoStart="true"<!--是否自動播放-->
android:flipInterval="4000"<!--播放間隔時間-->
android:inAnimation="@animator/x_in" <!--view進來的動畫-->
android:loopViews="true" <!--view是否重複顯示-->
android:outAnimation="@animator/x_out"<!--view出去時的動畫-->
app:layout_constraintBottom_toBottomOf="@+id/id_button1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/item"></AdapterViewFlipper>
- 代碼顯示
flipper= (AdapterViewFlipper) findViewById(R.id.id_image);
flipper.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int i) {
return images[i];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view=new ImageView(MainActivity.this);
}
ImageView imageView= (ImageView) view;
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageResource(images[i]);
return imageView;
}
});
findViewById(R.id.id_next).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flipper.showNext();
}
});
findViewById(R.id.id_previous).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flipper.showPrevious();
}
});
- 這樣就可以簡單的使用AdapterViewFlipper了,主要這個類繼承自AdapterViewAnimator,當然AdapterViewFlipper也有setOnItemClick,setOnItemSelected這些方法,自己去實驗哈~~