重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

android图片切换,Android图片旋转

android怎么viewpager实现循环切换图片

Android中的ViewPager则实现了左右滑动的效果,ViewPager类提供了多界面切换的新效果。利用ViewPager实现图片循环滚动代码如下:

创新互联公司是一家专业提供绿园企业网站建设,专注与做网站、网站建设、html5、小程序制作等业务。10年已为绿园众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

1、首先是布局文件,使用了一个ViewPager控件:       

  

span style="padding: 0px; margin: 0px; font-size: 14px;"RelativeLayout xmlns:android=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent" 

android.support.v4.view.ViewPager

android:id="@+id/viewpager"

android:layout_width="match_parent"

android:layout_height="match_parent" 

/android.support.v4.view.ViewPager

LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignBottom="@id/viewpager"

android:background="#33000000"

android:orientation="vertical"

android:padding="5dip" 

TextView

android:id="@+id/tv_image_description"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="第一个引导页面"

android:textColor="@android:color/white"

android:textSize="14sp" /

LinearLayout

android:id="@+id/ll_points"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="5dip"

android:layout_gravity="center_horizontal"

android:orientation="horizontal" 

/LinearLayout

/LinearLayout

/RelativeLayout/span

2、接下来实现一个继承PagerAdapter的MyAdapter类,实现一个PagerAdapter,代码如下:

span style="padding: 0px; margin: 0px; font-size: 14px;"package com.example.viewpagertest;

import java.util.List;

import android.support.v4.view.PagerAdapter;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

class ViewPagerAdapter extends PagerAdapter {

private ListImageView mImageViewList;

public ViewPagerAdapter(ListImageView imageViewList) {

super();

this.mImageViewList = imageViewList;

}

/**

* 该方法将返回所包含的 Item总个数。为了实现一种循环滚动的效果,返回了基本整型的最大值,这样就会创建很多的Item,

* 其实这并非是真正的无限循环。

*/

@Override

public int getCount() {

return Integer.MAX_VALUE;

}

/**

* 判断出去的view是否等于进来的view 如果为true直接复用

*/

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

/**

* 销毁预加载以外的view对象, 会把需要销毁的对象的索引位置传进来,就是position,

* 因为mImageViewList只有五条数据,而position将会取到很大的值,

* 所以使用取余数的方法来获取每一条数据项。

*/

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView(mImageViewList.get(position % mImageViewList.size()));

}

/**

* 创建一个view,

*/

@Override

public Object instantiateItem(ViewGroup container, int position) {

container.addView(mImageViewList.get(position % mImageViewList.size()));

return mImageViewList.get(position % mImageViewList.size());

}

}

/span

3、最后是主界面部分的代码:

span style="padding: 0px; margin: 0px; font-size: 14px;"package com.example.viewpagertest;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.os.SystemClock;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.view.View;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

import android.widget.TextView;

public class MainActivity extends Activity implements OnPageChangeListener {

private ListImageView imageViewList;

private TextView tvDescription;

private LinearLayout llPoints;

private String[] imageDescriptions;

private int previousSelectPosition = 0;

private ViewPager mViewPager;

private boolean isLoop = true;

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setView();

initView();

}

public void setView() {

setContentView(R.layout.activity_splash_viewpager);

// 自动切换页面功能

new Thread(new Runnable() {

@Override

public void run() {

while (isLoop) {

SystemClock.sleep(2000);

handler.sendEmptyMessage(0);

}

}

}).start();

}

public void initView() {

mViewPager = (ViewPager) findViewById(R.id.viewpager);

tvDescription = (TextView) findViewById(R.id.tv_image_description);

llPoints = (LinearLayout) findViewById(R.id.ll_points);

prepareData();

ViewPagerAdapter adapter = new ViewPagerAdapter(imageViewList);

mViewPager.setAdapter(adapter);

mViewPager.setOnPageChangeListener(this);

tvDescription.setText(imageDescriptions[previousSelectPosition]);

llPoints.getChildAt(previousSelectPosition).setEnabled(true);

/**

* 2147483647 / 2 = 1073741820 - 1 

* 设置ViewPager的当前项为一个比较大的数,以便一开始就可以左右循环滑动

*/

int n = Integer.MAX_VALUE / 2 % imageViewList.size();

int itemPosition = Integer.MAX_VALUE / 2 - n;

mViewPager.setCurrentItem(itemPosition);

}

private void prepareData() {

imageViewList = new ArrayListImageView();

int[] imageResIDs = getImageResIDs();

imageDescriptions = getImageDescription();

ImageView iv;

View view;

for (int i = 0; i  imageResIDs.length; i++) {

iv = new ImageView(this);

iv.setBackgroundResource(imageResIDs[i]);

imageViewList.add(iv);

// 添加点view对象

view = new View(this);

view.setBackgroundDrawable(getResources().getDrawable(R.drawable.point_background));

LayoutParams lp = new LayoutParams(5, 5);

lp.leftMargin = 10;

view.setLayoutParams(lp);

view.setEnabled(false);

llPoints.addView(view);

}

}

private int[] getImageResIDs() {

return new int[]{

R.drawable.bg1,

R.drawable.bg2,

R.drawable.bg3,

R.drawable.pic_01,

R.drawable.pic_02

};

}

private String[] getImageDescription() {

return new String[]{

"第一个引导页面",

"第二个引导页面",

"第三个引导页面",

"第四个引导页面",

"第五个引导页面"

};

}

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int position) {

// 改变图片的描述信息

tvDescription.setText(imageDescriptions[position % imageViewList.size()]);

// 切换选中的点,把前一个点置为normal状态

llPoints.getChildAt(previousSelectPosition).setEnabled(false);

// 把当前选中的position对应的点置为enabled状态

llPoints.getChildAt(position % imageViewList.size()).setEnabled(true);

previousSelectPosition = position  % imageViewList.size();

}

@Override

protected void onDestroy() {

super.onDestroy();

isLoop = false;

}

}

/span

android如何实现图片自动切换?

如果是不同图片的手动切换,可以用ViewPager,可以装载不同的view。或者用Gallery,可以实现像照片那样的图片切换。如果是要做成图片自动变化,像gif那样的动画,可以用AnimationDrawable这个类,在ImageView中展示详细的就不说了,网上代码一大堆。。。

android点击图片切换到另一张图片

private void onClick() {

// TODO Auto-generated method stub

ImageView imageView1=(ImageView)findViewById(R.id.imageView1);

imageView1.setImageResource(第一张图片ID);

imageView1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

imageView1.setImageResource(第二张图片ID);

}

});

}

android怎么实现一张图片旋转几秒后后自动换到另一张图片

图片旋转使用动画,设置动画时间,旋转完成后,设置另一张图片

RotateAnimation 动画,

RotateAnimation (float fromDegrees, float toDegrees, int

pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

参数说明:

float fromDegrees:旋转的开始角度。

float toDegrees:旋转的结束角度。

int

pivotXType:X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

float

pivotXValue:X坐标的伸缩值。

int

pivotYType:Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

float

pivotYValue:Y坐标的伸缩值。


名称栏目:android图片切换,Android图片旋转
网站网址:http://cqcxhl.cn/article/dsdeoos.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP