做旅游网站的社会效益可行性/日结app推广联盟
Android 图片自动切换
效果图:
思路: 利用 android.support.v4.view.ViewPager 和线程实现图片切换。
1. 首先把图片放入分别放入不同的 ImageView
2.然后重写一下 ViewPager 的 适配器 PagerAdapter
3.然后重写一个实现更新界面等操作
4:在onStart里面切换图片
配置文件代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><FrameLayout
android:layout_width="fill_parent"android:layout_height="200dip"><android.support.v4.view.ViewPager
android:id="@+id/vp"android:layout_width="match_parent"android:layout_height="match_parent"/><LinearLayout
android:layout_width="match_parent"android:layout_height="35dip"android:orientation="vertical"android:layout_gravity="bottom"android:gravity="center"android:background="#33000000"><TextView
android:id="@+id/tv_test_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="图片标题"android:textColor="@android:color/white"/><LinearLayout
android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginTop="3dip"><View
android:id="@+id/dot_0"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="@drawable/background"/><View
android:id="@+id/dot_1"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="@drawable/background1"/><View
android:id="@+id/dot_2"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="@drawable/background2"/><View
android:id="@+id/dot_3"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="@drawable/background3"/><View
android:id="@+id/dot_4"android:layout_width="5dip"android:layout_height="5dip"android:layout_marginLeft="2dip"android:layout_marginRight="2dip"android:background="@drawable/background4"/></LinearLayout></LinearLayout></FrameLayout></RelativeLayout>
java 文件为:
package androidstudio.android_test_ck;import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;import java.util.ArrayList;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class MainTestActivity extends AppCompatActivity {private int imageIds[] = {R.drawable.background, R.drawable.background1, R.drawable.background2, R.drawable.background3, R.drawable.background4};private ArrayList<ImageView> images = new ArrayList<>();private ViewPager vp;private int oldPosition = 0;//记录上一次点的位置private int currentItem; //当前页面private ScheduledExecutorService scheduledExecutorService;//图片标题private String titles[] = new String[]{"图片1", "图片2", "图片3", "图片4", "图片5"};private ArrayList<View> dots = new ArrayList<View>();;private TextView title;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_test);for (int i = 0; i < imageIds.length; i++) {ImageView imageView = new ImageView(this);imageView.setImageResource(imageIds[i]);images.add(imageView);}//显示的点 加入集合dots.add(findViewById(R.id.dot_0));dots.add(findViewById(R.id.dot_1));dots.add(findViewById(R.id.dot_2));dots.add(findViewById(R.id.dot_3));dots.add(findViewById(R.id.dot_4));//获取图片标题的idtitle = (TextView) findViewById(R.id.tv_test_title);//获取ViewPager 的idvp = (ViewPager) findViewById(R.id.vp);vp.setAdapter(new ViewPagerAdapter());vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {//设置页面刷新后的图片标题title.setText(titles[position]);oldPosition = position;currentItem = position;}@Overridepublic void onPageScrollStateChanged(int state) {}});}class ViewPagerAdapter extends PagerAdapter{@Overridepublic int getCount() {return images.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==object;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {//将试图移除试图组View v =images.get(position);container.removeView(v);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {//将试图添加进试图组View v =images.get(position);container.addView(v);return v;}}@Overrideprotected void onStart() {super.onStart();scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();//每隔两秒换一张图片scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(),2,2, TimeUnit.SECONDS);}//实现一个碎片的接口class ViewPagerTask implements Runnable{@Overridepublic void run() {currentItem = (currentItem+1)%imageIds.length;//更新界面handler.obtainMessage().sendToTarget();}}//在handler进行碎片跳转Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {vp.setCurrentItem(currentItem);}};
}