此博文用来记录安卓学习,后续的思路整理,可能会出现错误,欢迎指正…
MainActivity的代码
package com.merpyzf.slideshow;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends Activity implements ViewPager.OnPageChangeListener {
private ViewPager viewpager;
private TextView textview;
private int [] imageResIds; //存放本地图片资源
private String[] titles; //存放需要显示的文字
private long INTERVALTIME = 2000; //设置轮播图片间隔的时间
private int lastPosition = 0;
//存放创建的ImageView用于轮播图滚动显示的ImageView
private ArrayList<View> arrayImageView;
private LinearLayout linearlayout;
private boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
InitUI();
Initdata();
//给viewpager设置适配器
viewpager.setAdapter(new myPagerAdapter());
//设置向左的无限轮循,页面所在的位置跳转到一个比较大的数中间
viewpager.setCurrentItem(500000-(5000000%arrayImageView.size()));
viewpager.setOnPageChangeListener(this);
//直接使用while(true)在子线程执行休眠,达到图片的轮循
new Thread(new Runnable() {
@Override
public void run() {
flag = true;
try {
while(flag){
Thread.sleep(INTERVALTIME);
runOnUiThread( new Runnable() {
public void run() {
viewpager.setCurrentItem(viewpager.getCurrentItem()+1);
}
});
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
//数据的初始化,包括小圆点的初始化
private void Initdata() {
//初始化数据,此处可以进行网络的加载,获取数据
imageResIds = new int[]{R.mipmap.ico0,R.mipmap.ico1,R.mipmap.ico3,R.mipmap.ico4,R.mipmap.ic_launcher};
arrayImageView = new ArrayList<View>();
//创建一个imageview
ImageView imageView;
View view; //小圆点的view
LinearLayout.LayoutParams params; //参数设置
for(int i=0;i<imageResIds.length;i++){
imageView = new ImageView(this);
//给imageView设置图片
imageView.setBackgroundResource(imageResIds[i]);
//将设置好的image存放在创建好的View集合中
arrayImageView.add(imageView);
//创建一个用于填充小圆点的view
view = new View(this);
//给小圆点设置选择器
view.setBackgroundResource(R.drawable.selector_point);
//设置小圆点的宽高
params = new LinearLayout.LayoutParams(30,30);
if(i!=0){
params.leftMargin = 10;
//默认设置第一个小圆点是处于被选中的状态,除去0的全都设置成未选中状态
view.setEnabled(false);
}
//将小圆点添加到线性布局当中
linearlayout.addView(view, params);
}
titles = new String[]{"我是测试的数据1","我是测试的数据2","我是测试的数据3","我是测试的数据4","我是测试的数据5"};
//默认进入显示第一条数据
textview.setText(titles[0]);
//初始化小圆点指示器
}
//初始化UI控件
private void InitUI() {
viewpager = (ViewPager) findViewById(R.id.viewpager);
textview = (TextView)findViewById(R.id.tv_title);
linearlayout = (LinearLayout)findViewById(R.id.ll);
}
class myPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
//设置一个最大值,伪无限轮循
return Integer.MAX_VALUE ;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//取模,
int newPosition = position%arrayImageView.size();
container.addView(arrayImageView.get(newPosition));
return arrayImageView.get(newPosition) ;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
//页面状态发生改变
@Override
public void onPageScrollStateChanged(int state) {
}
//滑动的时候调用
@Override
public void onPageScrolled(int position, float positionOffset, int positionsetPixels) {
}
//页面切换的时候调用
@Override
public void onPageSelected(int position) {
System.out.println("position:"+position);
int newPosition = position%arrayImageView.size();
textview.setText(titles[newPosition]);
//将上一次的位置设置成enable
linearlayout.getChildAt(lastPosition).setEnabled(false);
//将当前的位置设置成newPosition
linearlayout.getChildAt(newPosition).setEnabled(true);
//记录上一次的位置
lastPosition = newPosition;
}
@Override
protected void onDestroy() {
super.onDestroy();
flag = false;
}
}
布局文件:
<pre name="code" class="html"><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" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp"
>
<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="match_parent"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="3dp"
android:background="#66a1a1a1" >
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#fff"
android:textSize="15sp"
android:text="依然爱这个千疮百孔的世界"
/>
<!-- 动态填充小圆点 -->
<LinearLayout
android:id="@+id/ll"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>