package cn.fanfan.asking;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cn.fanfan.main.R;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.Toast;
public class DetailFragment extends Fragment {
private static Uri photoUri ;
private File photo;
private String[] items = new String[] { "选择图片", "拍照" };
private float dp;
private GridView gridview;
private GridAdapter adapter;
public List<Bitmap> bmp = new ArrayList<Bitmap>();
public List<String> drr = new ArrayList<String>();
private EditText editText;
private HorizontalScrollView selectimg_horizontalScrollView;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView ;
dp = getActivity().getResources().getDimension(R.dimen.dp);
rootView = inflater.inflate(R.layout.asking_bg, container, false);
editText = (EditText)rootView.findViewById(R.id.quesdet);
selectimg_horizontalScrollView = (HorizontalScrollView)rootView.findViewById(R.id.selectimg_horizontalScrollView);
gridview = (GridView) rootView.findViewById(R.id.noScrollgridview);
gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
gridviewInit();
return rootView;
}
public EditText getTextString() {
return editText;
}
public void gridviewInit() {
adapter = new GridAdapter(getActivity());
adapter.setSelectedPosition(0);
int size = 0;
if (bmp.size() < 6) {
size = bmp.size() + 1;
} else {
size = bmp.size();
}
LayoutParams params = gridview.getLayoutParams();
final int width = size * (int) (dp * 9.4f);
params.width = width;
gridview.setLayoutParams(params);
gridview.setColumnWidth((int) (dp * 9.4f));
gridview.setStretchMode(GridView.NO_STRETCH);
gridview.setNumColumns(size);
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
/*((InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(getActivity()
.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);*/
if (arg2 == bmp.size()) {
String sdcardState = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(sdcardState)) {
showDialog();
} else {
Toast.makeText(getActivity(), "sdcard不存在?",
Toast.LENGTH_SHORT).show();
}
} else {
}
}
});
selectimg_horizontalScrollView.getViewTreeObserver()
.addOnPreDrawListener(
new OnPreDrawListener() {
public boolean onPreDraw() {
selectimg_horizontalScrollView.scrollTo(width,
0);
selectimg_horizontalScrollView
.getViewTreeObserver()
.removeOnPreDrawListener(this);
return false;
}
});
}
private void showDialog() {
new AlertDialog.Builder(getActivity())
.setTitle("上传图片")
.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
Intent openAlbumIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
getActivity(). startActivityForResult(openAlbumIntent, 0);
break;
case 1:
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
String pString = Environment.getExternalStorageDirectory()+"/fanfantmp";
final File photodir = new File(pString);
if (!photodir.exists()) {
photodir.mkdirs();
}
// TODO Auto-generated method stub
photo = new File(photodir,getPhotoFileName());
photoUri = Uri.fromFile(photo);
intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
getActivity().startActivityForResult(intent, 1);
break;
}
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
@SuppressLint("SimpleDateFormat")
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
return dateFormat.format(date) + ".jpg";
}
public Uri getUri() {
return photoUri;
}
public void showpic(String picpath){
Bitmap bitmap = Bimp.getLoacalBitmap(picpath);
bitmap = Bimp.createFramedPhoto(200, 200, bitmap,
(int) (dp * 1.6f));
drr.add(picpath);
bmp.add(bitmap);
gridviewInit();
}
public class GridAdapter extends BaseAdapter {
private LayoutInflater listContainer;
private int selectedPosition = -1;
private boolean shape;
public boolean isShape() {
return shape;
}
public void setShape(boolean shape) {
this.shape = shape;
}
public class ViewHolder {
public ImageView image;
}
public GridAdapter(Context context) {
listContainer = LayoutInflater.from(context);
}
public int getCount() {
if (bmp.size() < 6) {
return bmp.size() + 1;
} else {
return bmp.size();
}
}
public Object getItem(int arg0) {
return null;
}
public long getItemId(int arg0) {
return 0;
}
public void setSelectedPosition(int position) {
selectedPosition = position;
}
public int getSelectedPosition() {
return selectedPosition;
}
/**
*/
public View getView(int position, View convertView, ViewGroup parent) {
final int sign = position;
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = listContainer.inflate(
R.layout.item_published_grida, null);
holder.image = (ImageView) convertView
.findViewById(R.id.item_grida_image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (position == bmp.size()) {
holder.image.setImageBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.icon_addpic_unfocused));
if (position == 6) {
holder.image.setVisibility(View.GONE);
}
} else {
holder.image.setImageBitmap(bmp.get(position));
holder.image.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
bmp.get(sign).recycle();
bmp.remove(sign);
drr.remove(sign);
gridviewInit();
}
});
}
return convertView;
}
}
}