package info.justaway.util;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.util.ArrayList;
import info.justaway.JustawayApplication;
import info.justaway.ScaleImageActivity;
import info.justaway.VideoActivity;
import info.justaway.display.FadeInRoundedBitmapDisplayer;
import info.justaway.settings.BasicSettings;
import twitter4j.Status;
public class ImageUtil {
private static DisplayImageOptions sRoundedDisplayImageOptions;
public static void init() {
DisplayImageOptions defaultOptions = new DisplayImageOptions
.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.resetViewBeforeLoading(true)
.build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration
.Builder(JustawayApplication.getApplication())
.defaultDisplayImageOptions(defaultOptions)
.build();
ImageLoader.getInstance().init(config);
}
public static void displayImage(String url, ImageView view) {
String tag = (String) view.getTag();
if (tag != null && tag.equals(url)) {
return;
}
view.setTag(url);
ImageLoader.getInstance().displayImage(url, view);
}
public static void displayRoundedImage(String url, ImageView view) {
String tag = (String) view.getTag();
if (tag != null && tag.equals(url)) {
return;
}
view.setTag(url);
if (BasicSettings.getUserIconRoundedOn()) {
if (sRoundedDisplayImageOptions == null) {
sRoundedDisplayImageOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.resetViewBeforeLoading(true)
.displayer(new FadeInRoundedBitmapDisplayer(5))
.build();
}
ImageLoader.getInstance().displayImage(url, view, sRoundedDisplayImageOptions);
} else {
ImageLoader.getInstance().displayImage(url, view);
}
}
/**
* ツイートに含まれる画像をサムネイル表示
*
* @param context Activity
* @param viewGroup サムネイルを表示するView
* @param status ツイート
*/
public static void displayThumbnailImages(final Context context, ViewGroup viewGroup, ViewGroup wrapperViewGroup, TextView play, final Status status) {
// ツイートに含まれる動画のURLを取得
final String videoUrl = StatusUtil.getVideoUrl(status);
// ツイートに含まれる画像のURLをすべて取得
ArrayList<String> imageUrls = StatusUtil.getImageUrls(status);
if (imageUrls.size() > 0) {
// 画像を貼るスペースをクリア
viewGroup.removeAllViews();
int index = 0;
for (final String url : imageUrls) {
ImageView image = new ImageView(context);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
LinearLayout.LayoutParams layoutParams =
new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 240);
if (index > 0) {
layoutParams.setMargins(0, 20, 0, 0);
}
// layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
viewGroup.addView(image, layoutParams);
displayRoundedImage(url, image);
if (videoUrl.isEmpty()) {
// 画像タップで拡大表示(ピンチイン・ピンチアウトいつかちゃんとやる)
final int openIndex = index;
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), ScaleImageActivity.class);
intent.putExtra("status", status);
intent.putExtra("index", openIndex);
context.startActivity(intent);
}
});
} else {
// 画像タップで拡大表示(ピンチイン・ピンチアウトいつかちゃんとやる)
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), VideoActivity.class);
intent.putExtra("videoUrl", videoUrl);
context.startActivity(intent);
}
});
}
index++;
}
viewGroup.setVisibility(View.VISIBLE);
wrapperViewGroup.setVisibility(View.VISIBLE);
} else {
viewGroup.setVisibility(View.GONE);
wrapperViewGroup.setVisibility(View.GONE);
}
play.setVisibility(videoUrl.isEmpty() ? View.GONE : View.VISIBLE);
}
}