android 静态图片自动切换,Android实现图片轮播效果的两种方法

大家在使用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实现图片轮播效果的两种方法,希望大家喜欢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中实现图片轮播可以通过以下步骤: 1. 导入图片资源:将需要轮播的图片添加到项目的资源文件夹中,通常是在`res`目录下的`drawable`文件夹中。 2. 创建布局文件:在`res/layout`目录下创建一个新的布局文件,例如`activity_main.xml`。在布局文件中添加一个`ImageView`用于显示轮播的图片。 3. 添加ViewPager:在布局文件中添加一个`ViewPager`控件,用于实现图片的轮播效果。可以使用`androidx.viewpager.widget.ViewPager`来引入ViewPager。 4. 创建适配器:创建一个适配器类,继承自`androidx.fragment.app.FragmentPagerAdapter`,用于管理ViewPager中的图片片段。 5. 创建图片片段:创建一个图片片段类,继承自`androidx.fragment.app.Fragment`,用于显示单张图片。 6. 实现适配器方法:在适配器类中实现必要的方法,例如`getCount()`返回图片数量,`getItem()`返回指定位置的图片片段。 7. 设置适配器:在Activity或Fragment中找到ViewPager控件,并设置适配器。 8. 设置轮播效果:可以使用定时器或者Handler来实现图片自动切换效果。在Activity或Fragment中使用定时器或Handler来定时切换ViewPager的当前项。 9. 添加指示器(可选):如果需要显示图片轮播的指示器,可以在布局文件中添加一个指示器控件,例如`ViewPagerIndicator`。 10. 监听点击事件(可选):如果需要监听图片的点击事件,可以在图片片段中为ImageView设置点击监听器,并在监听器中处理点击事件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值