package com.siyehuazhilian.fragment;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Field;import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import com.siyehuazhilian.nextday.R;
import com.siyehuazhilian.utils.DownRescoureces;public class ViewPagerAdatperFragment extends Fragment {
private View layoutinflater;
// 背景图片
private ImageView imageView;
// 大字说明
private TextView largeSize;
// 小字说明
private TextView smallSize;
// 日期
private TextView monthTextView, yearTextView, weekTextView, dateTextView;
//
private LinearLayout dateLayout, informationLayout;
// 隐藏图片因子0表示放到最前面,隐藏其他的控件,1表示放到最后面,不隐藏其他的控件
private int hideImage = 0; // 当前时间
private String[] dateStr = new String[6];
// 当前显示诗句
private String[] textStr = new String[2]; // 加载资源对象
private DownRescoureces downRescoureces = new DownRescoureces(); public static ViewPagerAdatperFragment newInstance(String[] dateStr) {
ViewPagerAdatperFragment adatperFragment = new ViewPagerAdatperFragment(); Bundle bundle = new Bundle();
bundle.putString("week", dateStr[0]);
bundle.putString("month", dateStr[1]);
bundle.putString("day", dateStr[2]);
bundle.putString("year", dateStr[5]); adatperFragment.setArguments(bundle);
return adatperFragment;
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
layoutinflater = inflater.inflate(R.layout.pager_adapter_view, null);
return layoutinflater;
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
dateLayout = (LinearLayout) layoutinflater
.findViewById(R.id.linerlayout_date);
informationLayout = (LinearLayout) layoutinflater
.findViewById(R.id.linearlayout_information);
imageView = (ImageView) layoutinflater
.findViewById(R.id.imageview_image);
largeSize = (TextView) layoutinflater
.findViewById(R.id.textview_large_size);
smallSize = (TextView) layoutinflater
.findViewById(R.id.textview_small_size);
monthTextView = (TextView) layoutinflater
.findViewById(R.id.textiview_month);
yearTextView = (TextView) layoutinflater
.findViewById(R.id.textiview_year);
weekTextView = (TextView) layoutinflater
.findViewById(R.id.textiview_week);
dateTextView = (TextView) layoutinflater
.findViewById(R.id.textview_day); // 得到数据
dateStr[0] = getArguments().getString("week");
dateStr[1] = getArguments().getString("month");
dateStr[2] = getArguments().getString("day");
dateStr[5] = getArguments().getString("year"); imageView.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
if (hideImage == 0) {
Animation animation = new AlphaAnimation(1.0f, 0.0f);
animation.setDuration(3000);
dateLayout.startAnimation(animation);
informationLayout.startAnimation(animation);
dateLayout.setVisibility(View.GONE);
informationLayout.setVisibility(View.GONE);
hideImage++;
} else {
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(3000);
dateLayout.startAnimation(animation);
informationLayout.startAnimation(animation);
dateLayout.setVisibility(View.VISIBLE);
informationLayout.setVisibility(View.VISIBLE);
hideImage--;
}
}
}); } @Override
public void onResume() {
super.onResume();
setText();
setImage();
setDate();
} /**
 * 设置Date
 */
private void setDate() {
monthTextView.setText(dateStr[1]);
yearTextView.setText(dateStr[5]);
weekTextView.setText(dateStr[0]);
dateTextView.setText(dateStr[2]);
} /**
 * 设置图片
 */
private void setImage() {
int currentDay = Integer.parseInt(dateStr[2]);
Field[] fields = R.drawable.class.getDeclaredFields(); try {
DisplayMetrics display = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(display);
int width = display.widthPixels;
int height = display.heightPixels;
imageView.setImageBitmap(optimizeBitmap(getResources(),
fields[currentDay - 1].getInt(R.drawable.class), width,
height));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} /**
 * 读取图片
 */
public Bitmap optimizeBitmap(Resources resources, int drawableID,
int maxWidth, int maxHeight) {
Bitmap result = null;
// 图片配置对象,该对象可以配置图片加载的像素获取个数
BitmapFactory.Options options = new BitmapFactory.Options();
// 表示加载图像的原始宽高
options.inJustDecodeBounds = true;
result = BitmapFactory.decodeResource(resources, drawableID, options);
// Math.ceil表示获取与它最近的整数(向上取值 如:4.1->5 4.9->5)
int widthRatio = (int) Math.ceil(options.outWidth / maxWidth);
int heightRatio = (int) Math.ceil(options.outHeight / maxHeight); options.inSampleSize = 1;
// 设置最终加载的像素比例,表示最终显示的像素个数为总个数的
if (widthRatio > 1 || heightRatio > 1) {
if (widthRatio > heightRatio) {
options.inSampleSize = widthRatio;
} else {
options.inSampleSize = heightRatio;
}
}
// 解码像素的模式,在该模式下可以直接按照options的配置取出像素点
options.inJustDecodeBounds = false;
result = BitmapFactory.decodeResource(resources, drawableID, options);
return result;
} /**
 * 设置文字
 * 
 */
private void setText() {
try {
InputStream inputStream = getResources().getAssets()
.open("100.txt");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream, "gb2312"));
int currentDay = Integer.parseInt(dateStr[2]);
String tmp = "";
for (int i = 0; i < currentDay; i++) {
tmp = bufferedReader.readLine();
}
textStr = tmp.split("-");
largeSize.setText(textStr[1]);
smallSize.setText(textStr[0]);
smallSize.setSelected(true);
} catch (IOException e) {
e.printStackTrace();
}
}}