当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现图片轮播效果的两种方法

Android实现图片轮播效果的两种方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

背景图片素材库,黑蝙蝠远程控制,俨然造句

大家在使用app的过程中,经常会看到上部banner图片轮播的效果,那么今天我们就一起来学习一下,android中图片轮询的几种实现方法:

第一种:使用动画的方法实现:(代码繁琐)

这种发放需要:两个动画效果,一个布局,一个主类来实现,不多说了,来看代码吧:

public class iamgetractivity extends activity {
/** called when the activity is first created. */
public imageview imageview;
public imageview imageview2;
public animation animation1;
public animation animation2;
public textview text;
public boolean juage = true;
public int images[] = new int[] { r.drawable.icon, r.drawable.expriment,
r.drawable.changer, r.drawable.dataline, r.drawable.preffitication };
public int count = 0;
public handler handler = new handler();
public runnable runnable = new runnable() {
@override
public void run() {
// todo auto-generated method stub
animationset animationset1 = new animationset(true);
animationset animationset2 = new animationset(true);
imageview2.setvisibility(0);
translateanimation ta = new translateanimation(
animation.relative_to_self, 0f, animation.relative_to_self,
-1f, animation.relative_to_self, 0f,
animation.relative_to_self, 0f);
ta.setduration(2000);
animationset1.addanimation(ta);
animationset1.setfillafter(true);
ta = new translateanimation(animation.relative_to_self, 1.0f,
animation.relative_to_self, 0f, animation.relative_to_self,
0f, animation.relative_to_self, 0f);
ta.setduration(2000);
animationset2.addanimation(ta);
animationset2.setfillafter(true);
//iamgeview 出去 imageview2 进来
imageview.startanimation(animationset1);
imageview2.startanimation(animationset2);
imageview.setbackgroundresource(images[count % 5]);
count++;
imageview2.setbackgroundresource(images[count % 5]);
text.settext(string.valueof(count));
if (juage)
handler.postdelayed(runnable, 6000);
log.i(handler, handler);
}
};
@override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
imageview = (imageview) findviewbyid(r.id.imageview);
imageview2 = (imageview) findviewbyid(r.id.imageview2);
text=(textview)findviewbyid(r.id.text);
text.settext(string.valueof(count));
//将iamgeview先隐藏,然后显示
imageview2.setvisibility(4);
handler.postdelayed(runnable, 2000);
}
public void onpause() {
juage = false;
super.onpause();
}
}

布局代码:

android:orientation=vertical
android:layout_width=fill_parent
android:layout_height=fill_parent
android:id=@+id/rl>
android:id=@+id/imageview
android:layout_width=fill_parent
android:background=@drawable/icon
android:layout_below=@+id/rl
android:layout_height=120dp />
android:id=@+id/imageview2
android:layout_width=fill_parent
android:background=@drawable/expriment
android:layout_below=@+id/rl
android:layout_height=120dp />
android:id=@+id/text
android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_below=@id/imageview/>

 第二种:使用viewflipper实现图片的轮播

android系统自带的一个多页面管理控件,它可以实现子界面的自动切换:

首先 需要为viewflipper加入view

(1) 静态导入:在layout布局文件中直接导入

(2) 动态导入:addview()方法

viewplipper常用方法:

setinanimation:设置view进入屏幕时候使用的动画

setoutanimation:设置view退出屏幕时候使用的动画

shownext:调用该函数来显示viewflipper里面的下一个view

showprevious:调用该函数来显示viewflipper里面的上一个view

setflipinterval:设置view之间切换的时间间隔

startflipping使用上面设置的时间间隔来开始切换所有的view,切换会循环进行

stopflipping:停止view切换

讲了这么多,那么我们今天要实现的是什么呢?

(1) 利用viewflipper实现图片的轮播

(2) 支持手势滑动的viewflipper

我们需要先准备几张图片:把图片放进drawable中

创建两个动画:在res下面新建一个folder里面新建两个xml:

left_in:
android:duration=5000
android:fromxdelta=100%p
android:toxdelta=0/>
left_out:
android:fromxdelta=0
android:toxdelta=-100%p
android:duration=5000/>

一个布局文件:

xmlns:tools=http://schemas.android.com/tools
android:layout_width=match_parent
android:layout_height=match_parent
tools:context=.mainactivity >
android:id=@+id/flipper
android:layout_width=fill_parent
android:layout_height=fill_parent/>

一个主类:

public class mainactivity extends activity {
private viewflipper flipper;
private int[] resid = {r.drawable.pc1,r.drawable.pc2,r.drawable.pc3,r.drawable.pc4};
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
flipper = (viewflipper) findviewbyid(r.id.flipper);
/*
* 动态导入的方式为viewflipper加入子view
* */
for (int i = 0; i < resid.length; i++) {
flipper.addview(getimageview(resid[i]));
}
/*
* 为viewflipper去添加动画效果
* */
flipper.setinanimation(this, r.anim.left_in);
flipper.setoutanimation(this, r.anim.left_out);
flipper.setflipinterval(5000);
flipper.startflipping();
}
private imageview getimageview(int resid){
imageview image = new imageview(this);
image.setbackgroundresource(resid);
return image;
}
}

那么这样就实现了一个图片轮询的功能效果了

我们还可以添加点击,滑动效果:

我们还需要添加两个向右的滑动效果:

right_in:
android:fromxdelta=0
android:toxdelta=-100%p
android:duration=2000/>
right_out:
android:fromxdelta=100%p
android:toxdelta=0
android:duration=2000/>

然后我们还需要在主类里面添加(如果你不想让图片自动播放,只想通过手势来实现图片播放那么你需要把“为viewflipper添加动画效果的代码”删掉):

publibooleaontouchevent(motionevenevent{
/todauto-generatemethostub
switc(event.getaction(){
casmotionevent.action_down:
startevent.getx();
break;
casmotionevent.action_move://判断向左滑动还是向右滑动
i(event.getx(start100{
flipper.setinanimation(thisr.anim.left_in);
flipper.setoutanimation(thisr.anim.left_out);
flipper.showprevious();
}elsi(startevent.getx(100{
flipper.setinanimation(thisr.anim.right_in);
flipper.setoutanimation(thisr.anim.right_out);
flipper.shownext();
}
casmotionevent.action_up:
break;
}
retursuper.ontouchevent(event);
}

这样我们利用我们的viewflipper完成的图片轮询的功能就做完了。

以上所述是小编给大家分享的android实现图片轮播效果的两种方法,希望大家喜欢。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网