ViewPager图片旋转

package com.wiiy.jtb.manager;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import com.wiiy.jtb.R;
import com.wiiy.jtb.common.Param;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ImageView.ScaleType;

public class ManagerDisplayCaseShowActivity extends Activity{
private ImageView[] imageViews = null;
private ImageView imageView = null;
private ViewPager advPager = null;
private AtomicInteger what = new AtomicInteger(0);
List<View> advPics;
ArrayList<HashMap<String, Object>> list;
String callon_time;
ArrayList<HashMap<String, Object>> listimage;
Bitmap bitmap = null;
ArrayList<HashMap<String,Object>> bitlist = new ArrayList<HashMap<String,Object>>();
List<LinearLayout> layout;
LinearLayout mFloatLayout=null;
int[] spin_angle;
//设置WindowManager
private WindowManager wm=null;
private WindowManager.LayoutParams wmParams=null;
//声明两个按钮,分别代表向左和向右滑动
private ImageView btnLeft=null;
private ImageView btnRight=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logincartoon);
this.setTitle("聚通宝 — 陈列情况 — 拜访明细");
listimage = new ArrayList<HashMap<String,Object>>();
layout = new ArrayList<LinearLayout>();
advPager = (ViewPager) findViewById(R.id.adv_pager);
LinearLayout group = (LinearLayout) findViewById(R.id.viewGroup);
list = (ArrayList<HashMap<String, Object>>) getIntent().getSerializableExtra("list");
callon_time = getIntent().getStringExtra("callon_time");
advPics = new ArrayList<View>();
for(int i=0; i<list.size(); i++){
if(list.get(i).get("callon_time").equals(callon_time)){
HashMap<String, Object> ms = new HashMap<String, Object>();
ms.put("image_path", list.get(i).get("image_path"));
ms.put("memo", list.get(i).get("memo"));
listimage.add(ms);
}
}

getimage(listimage);
if(advPics.size()!=0){
initViewPager(advPics,group);
initImageButtonView();
}else{
Toast.makeText(ManagerDisplayCaseShowActivity.this, "没有图片", Toast.LENGTH_SHORT).show();
finish();
}


}
public void getimage(ArrayList<HashMap<String, Object>> listimage){
for(int i=0; i<listimage.size(); i++){
String path = (String) listimage.get(i).get("image_path");
String memo = (String) listimage.get(i).get("memo");
String[] sp = path.split(";");
for(int j=0; j<sp.length; j++){
try {
bitmap = returnBitMap(Param.webserver+"upload/visitInfo/"+encode(sp[j]));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if(bitmap!=null){
HashMap<String, Object> hash = new HashMap<String, Object>();
hash.put("image", bitmap);
hash.put("memo", memo);
bitlist.add(hash);
layout.add(mFloatLayout);
ImageView images = new ImageView(ManagerDisplayCaseShowActivity.this);
images.setImageBitmap(bitmap);
advPics.add(mFloatLayout);

}
}

}
spin_angle = new int[bitlist.size()];
for(int i=0; i<bitlist.size(); i++){
spin_angle[i]=0;
}
}

public Bitmap returnBitMap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
myFileUrl = new URL(url);
} catch (MalformedURLException e)
{
e.printStackTrace();
}
try {
InputStream is = myFileUrl.openStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len = 0;
while ((len = is.read(b, 0, 1024)) != -1)
{
baos.write(b, 0, len);
baos.flush();
}
byte[] bytes = baos.toByteArray();
bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length);
is.close();


} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
private void initViewPager(List<View> advPics,LinearLayout group) {
imageViews = new ImageView[advPics.size()];

for (int i = 0; i < advPics.size(); i++) {
imageView = new ImageView(this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(20,20);
p.setMargins(10, 0, 0, 0);
imageView.setLayoutParams(p);

imageViews[i] = imageView;
if (i == 0) {
imageViews[i].setBackgroundResource(R.drawable.banner_dian_focus);
} else {
imageViews[i].setBackgroundResource(R.drawable.banner_dian_blur);
}
group.addView(imageViews[i]);
}
AdvAdapter adapter = new AdvAdapter(advPics);
advPager.setAdapter(adapter);

advPager.setOnPageChangeListener(new GuidePageChangeListener());

}


private final class GuidePageChangeListener implements OnPageChangeListener {

public void onPageScrollStateChanged(int arg0) {

}

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

}

public void onPageSelected(int arg0) {
what.getAndSet(arg0);
for (int i = 0; i < imageViews.length; i++) {
imageViews[arg0].setBackgroundResource(R.drawable.banner_dian_focus);
if (arg0 != i) {
imageViews[i].setBackgroundResource(R.drawable.banner_dian_blur);
}
}
if(what.get()==0){
btnLeft.setVisibility(View.GONE);
}else{
btnLeft.setVisibility(View.VISIBLE);
}
if(imageViews.length == (what.get()+1)){
btnRight.setVisibility(View.GONE);
}else{
btnRight.setVisibility(View.VISIBLE);
}
if (imageViews.length == (what.get()+1)) {
Toast.makeText(ManagerDisplayCaseShowActivity.this, "已经到最后一页了!", Toast.LENGTH_SHORT).show();
}

}

}
public static String encode(String str) throws UnsupportedEncodingException {
String encodedURL = URLEncoder.encode(str, "UTF-8");
return encodedURL;
}

public class AdvAdapter extends PagerAdapter {
private List<View> views = null;

public AdvAdapter(List<View> views) {
this.views = views;
}

@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewGroup) arg0).removeView(views.get(arg1));
// ((ViewGroup) arg0).removeView((View) arg2);
}

@Override
public void finishUpdate(View arg0) {

}

@Override
public int getCount() {
return views.size();
}

@Override
public Object instantiateItem(View arg0, final int arg1) {
final display dis = new display();
if(layout.get(arg1)==null){
LayoutInflater inflater = ManagerDisplayCaseShowActivity.this.getLayoutInflater();
mFloatLayout = (LinearLayout) inflater.inflate(R.layout.displaypictureshow,null);
layout.add(arg1, mFloatLayout);
}
dis.ima = (ImageView) layout.get(arg1).findViewById(R.id.image);
Bitmap b = (Bitmap) bitlist.get(arg1).get("image");
//将图片居中显示
dis.ima.setScaleType(ScaleType.CENTER);

dis.leftbut = (Button) layout.get(arg1).findViewById(R.id.leftbut);
dis.rightbut = (Button) layout.get(arg1).findViewById(R.id.rightbut);
dis.memo = (TextView) layout.get(arg1).findViewById(R.id.memo);
dis.leftbut.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
spin_angle[arg1]-=90;
//将图片居中显示
dis.ima.setScaleType(ScaleType.CENTER);
Bitmap b = (Bitmap) bitlist.get(arg1).get("image");
dis.ima.setImageBitmap(getBitmap(b,spin_angle[arg1]));
}
});
dis.rightbut.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
spin_angle[arg1]+=90;
//将图片居中显示
dis.ima.setScaleType(ScaleType.CENTER);
Bitmap b = (Bitmap) bitlist.get(arg1).get("image");
dis.ima.setImageBitmap(getBitmap(b,spin_angle[arg1]));
}
});
String memo = (String) bitlist.get(arg1).get("memo");
if(!memo.equals("null")){
dis.memo.setText(memo);
}

try {
((ViewGroup) arg0).removeView(layout.get(arg1));
dis.ima.setImageBitmap(getBitmap(b,spin_angle[arg1]));
((ViewGroup) arg0).addView(layout.get(arg1), arg1);

} catch (Exception e) {
Toast.makeText(ManagerDisplayCaseShowActivity.this, "ManagerDisplayCaseShowActivity", Toast.LENGTH_SHORT).show();
}

return layout.get(arg1);
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {

}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View arg0) {

}

public Bitmap getBitmap(Bitmap bitmap,int spin_angle){

//获取这个图片的宽和高
int width = bitmap.getWidth();
int height = bitmap.getHeight();

//定义预转换成的图片的宽度和高度
// int newWidth = width;
// int newHeight = height;

//计算缩放率,新尺寸除原始尺寸
// float scaleWidth = (float)width;
// float scaleHeight = (float) height;

// 创建操作图片用的matrix对象
Matrix matrix = new Matrix();

// 缩放图片动作
// matrix.postScale(scaleWidth, scaleHeight);

//旋转图片 动作
matrix.postRotate(spin_angle);

// 创建新的图片
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,width, height, matrix, true);

//将上面创建的Bitmap转换成Drawable对象,使得其可以使用在ImageView, ImageButton中
// BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

//创建一个ImageView
// ImageView imageView = new ImageView(this);

// 设置ImageView的图片为上面转换的图片
// imageView.setImageDrawable(bmd);

//将图片居中显示
// imageView.setScaleType(ScaleType.CENTER);

//将ImageView添加到布局模板中
// linLayout.addView(imageView,new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT ));

// 设置为本activity的模板
return resizedBitmap;
}
}


class display{
public ImageView ima;
public TextView memo;
public Button leftbut;
public Button rightbut;

}

/**
* 初始化悬浮按钮
*/
private void initImageButtonView(){
//获取WindowManager
wm=(WindowManager)getApplicationContext().getSystemService("window");

//设置LayoutParams相关参数
wmParams = new WindowManager.LayoutParams();

//设置window type
wmParams.type=LayoutParams.TYPE_PHONE;

//设置图片格式,效果为背景透明
wmParams.format=PixelFormat.RGBA_8888;

//设置Window flag参数
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE;

//设置x、y初始值
wmParams.x=0;
wmParams.y=-25;

//设置窗口长宽数据
wmParams.width=50;
wmParams.height=50;

//创建左右按钮
createLeftButtonView();
createRightButtonView();



}

/**
* 设置左边按钮
*/
private void createLeftButtonView(){
btnLeft=new ImageView(this);
btnLeft.setImageResource(R.drawable.left_icon);

// btnLeft.setAlpha(0); //为隐藏图标
btnLeft.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
int poin = (what.get()-1);
advPager.setCurrentItem(poin);
}
});

//调整窗口
wmParams.gravity=Gravity.LEFT|Gravity.CENTER_VERTICAL;

//显示图像
wm.addView(btnLeft, wmParams);
}

/**
* 设置右边按钮
*/
private void createRightButtonView(){
btnRight=new ImageView(this);
btnRight.setImageResource(R.drawable.right_icon);

// btnRight.setAlpha(0); //为隐藏图标
btnRight.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
int poin = (what.get()+1);
advPager.setCurrentItem(poin);

}
});

//调整窗口
wmParams.gravity=Gravity.RIGHT|Gravity.CENTER_VERTICAL;

//显示图像
wm.addView(btnRight, wmParams);
}
@Override
public void onDestroy(){
super.onDestroy();
//在程序退出(Activity销毁)时销毁窗口
if(btnLeft!=null){
wm.removeView(btnLeft);
wm.removeView(btnRight);
}

}
@Override
protected void onPause() {
btnLeft.setVisibility(View.GONE);
btnRight.setVisibility(View.GONE);
super.onPause();
}
@Override
protected void onResume() {
if(what.get()==0){
btnLeft.setVisibility(View.GONE);
}else{
btnLeft.setVisibility(View.VISIBLE);
}
try {
if(imageViews.length == (what.get()+1)){
btnRight.setVisibility(View.GONE);
}else{
btnRight.setVisibility(View.VISIBLE);
}
} catch (Exception e) {
}

super.onResume();
}
}

posted @ 2013-05-30 16:09  xxdc  阅读(566)  评论(0编辑  收藏  举报