查看Flipper Android
我在flipper中有几个图像需要动画,当按下“下一步”按钮时,下一个图像应该来自右侧,当前图像应该从左侧消失,同样,如果按下“后退”,则上一个图像应该来自右侧,当前图像应该消失。我想要左入右出,左出右入动画,记住堆的大小,任何体都有解决方案吗? 我用了这个密码查看Flipper Android,android,animation,Android,Animation,我在flipper中有几个图像需要动画,当按下“下一步”按钮时,下一个图像应该来自右侧,当前图像应该从左侧消失,同样,如果按下“后退”,则上一个图像应该来自右侧,当前图像应该消失。我想要左入右出,左出右入动画,记住堆的大小,任何体都有解决方案吗? 我用了这个密码 nbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (current_s
nbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (current_shown_index < list.length - 1) {
current_shown_index++;
bkbtn.setVisibility(View.VISIBLE);
View view = inflater.inflate(R.layout.view_flipper_item, null);
ImageView iv = (ImageView) view.findViewById(R.id.iv_flipper_item);
iv.setImageResource(list[current_shown_index]);
Log.v("count", vFlipper.getChildCount() + "flipper length");
if (vFlipper.getChildCount() == 3) {
vFlipper.removeViewAt(0);
}
vFlipper.addView(view);
vFlipper.setInAnimation(inFromRightAnimation());
vFlipper.setOutAnimation(outToLeftAnimation());
vFlipper.showNext();
}
}
});
bkbtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (current_shown_index > 0) {
int diff = 2;
if (vFlipper.getChildCount() == 3 ){
vFlipper.removeViewAt(2);
}
View viewb = inflater.inflate(R.layout.view_flipper_item, null);
ImageView iv = (ImageView) viewb.findViewById(R.id.iv_flipper_item);
if(current_shown_index == 1 ){
diff = 1;
}else{
iv.setImageResource(list[current_shown_index-diff ]);
}
vFlipper.addView(viewb, 0);
current_shown_index--;
}else{
bkbtn.setVisibility(View.GONE);
}
vFlipper.setInAnimation(inFromLeftAnimation());
vFlipper.setOutAnimation(outToRightAnimation());
vFlipper.showPrevious();
}
});
我给你一个起点:
final Animation outToLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
final Animation inFromRight = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
final Animation outToRight = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_left);
final Animation inFromLeft = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_right);
现在将这些方法与ViewFlipper中的setInAnimation和setOutAnimation一起使用。要在ViewFlipper中实现in和out动画,可以使用setInAnimation和setOutAnimation方法 例如:
ViewSwitcher可以为您处理此问题,一个正在运行的视图切换器
您还可以在这里找到一个附带源代码的动画,动画运行良好,但主要问题是内存问题我必须删除视图,因为几张图像后堆大小增加,所以我想在flipper中一次最多保留3个视图,其余的我想删除,这在“下一步”按钮上运行良好,但当我单击“上一步”按钮时,会产生问题,它会更改图像。@atiq_se Ok,我明白了。在这种情况下,为什么不使用ViewPager呢?使用它,您在内存中保存的视图不会超过2个:一个向外滑动,一个向内滑动。您可以根据需要动态创建这些视图,并自动获得“滑入/滑出”左/右动画,此外,您还可以通过图像导航获得手指手势识别。
viewFlipper.setInAnimation(AnimationUtils.loadAnimation(
mContext, android.R.anim.slide_in_right));
viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(
mContext, android.R.anim.slide_out_right));
/* Where - mContext is Context object
*/