activity 接收2个参数num(照片数量)和bundle bundle存储List<logImageMode>类型的modelImageList
public class PhotoShowActivity extends AppCompatActivity {
@InjectView(R.id.viewpager)
ViewPager viewPager;
@InjectView(R.id.dotcontaint)
LinearLayout dotcontaint;
private Intent intent;
private Bundle bundle;
private int getNum;
private List<logImageMode> modelImageList;
private ArrayList<View> viewList = new ArrayList<>();
private List<Bitmap> bitmaps = new ArrayList<>();
ArrayList<View> dots = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_show);
ButterKnife.inject(this);
init();
}
private void init() {
intent = getIntent();
bundle = intent.getExtras();
getNum = intent.getIntExtra("num", 0);
modelImageList = (List<logImageMode>) bundle.getSerializable("modelImageList");
initView();
}
private void initView() {
new GetShowBitmap().start();
getDotList(modelImageList.size());
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < viewList.size(); i++) {
dots.get(i).setBackgroundResource(R.drawable.dot_nomal);//设置上次选中的圆点为不选中
}
dots.get(position % viewList.size()).setBackgroundResource(R.drawable.dot_focus);//设置当前选中的圆点为选中
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void getDotList(int length) {
// TODO Auto-generated method stub
//循环图片数组,创建对应数量的dot
for (int i = 0; i < length; i++) {
View view = LayoutInflater.from(this).inflate(R.layout.dot_layout, null);//加载布局
View dot = view.findViewById(R.id.dotView);//得到布局中的dot点组件
//收集dot
dots.add(dot);
//把布局添加到线性布局
dotcontaint.addView(view);
}
}
private class GetShowBitmap extends Thread {
@Override
public void run() {
super.run();
List<Bitmap> lists = new ArrayList<>();
for (int i = 0; i < modelImageList.size(); i++) {
Bitmap tempBitmap = null;
try {
tempBitmap = Picasso.with(getBaseContext())
.load(AddressManager.getImgHost() + modelImageList.get(i).getFilePath())
.resize(getWidth(), getHeight())
//.memoryPolicy(MemoryPolicy.NO_CACHE)
//.networkPolicy(NetworkPolicy.NO_CACHE)
.get();
lists.add(tempBitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
Message message = new Message();
message.obj = lists;
handler.sendMessage(message);
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
bitmaps = (List<Bitmap>) msg.obj;
for (int i = 0; i < bitmaps.size(); i++) {
ImageView imageView = new ImageView(PhotoShowActivity.this);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setImageBitmap(bitmaps.get(i));
View view = new View(PhotoShowActivity.this);
view.setLayoutParams(viewPager.getLayoutParams());
view.setBackground(imageView.getDrawable());
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
viewList.add(view);
}
dots.get(getNum).setBackgroundResource(R.drawable.dot_focus);
viewPager.setAdapter(new ImageAdapter(viewList));
viewPager.setCurrentItem(getNum);//设置此次要显示的pager
}
};
private int getWidth() { //获取宽度
DisplayMetrics dm = getResources().getDisplayMetrics();
int w_screen = dm.widthPixels;
return w_screen;
}
private int getHeight() { //获取宽度
DisplayMetrics dm = getResources().getDisplayMetrics();
int w_screen = dm.heightPixels;
int ivHeight = w_screen / 7 * 5;
return w_screen;
}
}
logImageMode 一个图片model
public class logImageMode implements Serializable {
private String appraiseFileId;
private String filePath;
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public String getAppraiseFileId() {
return appraiseFileId;
}
public void setAppraiseFileId(String appraiseFileId) {
this.appraiseFileId = appraiseFileId;
}
}
对应xml activity_photo_show.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:background="#000000"
android:orientation="vertical"
tools:context="com.schooling.anzhen.main.indoorwork.PhotoShowActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"></LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="bottom"
android:layout_weight="5"
android:background="#ffffff">
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/dotcontaint"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal" />
</LinearLayout>
使用的ImageAdapter 与滚动图中的adapter有一点不同
public class ImageAdapter extends PagerAdapter {
private ArrayList<View> viewlist;
public ImageAdapter(ArrayList<View> viewlist) {
this.viewlist = viewlist;
}
@Override
public int getCount() {
//设置成最大,使用户看不到边界
return viewlist.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
//Warning:不要在这里调用removeView
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//对ViewPager页号求模取出View列表中要显示的项
position %= viewlist.size();
if (position<0){
position = viewlist.size()+position;
}
View view = viewlist.get(position);
//如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。
ViewParent vp =view.getParent();
if (vp!=null){
ViewGroup parent = (ViewGroup)vp;
parent.removeView(view);
}
container.addView(view);
//add listeners here if necessary
return view;
}
}
其他xml参考滚动图