1
유니버설 이미지 로더에서 이미지를로드하는 데 사용하는 Html.ImageGetter 클래스가 있습니다. <img> 태그는 온라인으로 가져 오는 html json 파일에 있습니다.Html.ImageGetter 클래스에서 그려지는 이미지를 클릭하는 방법.
이미지가 제대로로드되지만 이미지가 작아지면 이미지가 장치의 너비와 일치하도록 축소되어 일부 이미지가 너무 작아 내용을 볼 수 없습니다.
내 목적은 이미지에 클릭 수신기를 설정하고 사용자가 이미지의 전체 크기를 볼 수있는 확대/축소 대화 상자를 표시하는 것이 었습니다. 현재 클릭 수를 경청하기가 어렵습니다.
이 내 ImageGetter 클래스는
public class UILImageGetter implements Html.ImageGetter{
Context c;
TextView container;
UrlImageDownloader urlDrawable;
public UILImageGetter(View textView, Context context) {
this.c = context;
this.container = (TextView) textView;
}
@Override
public Drawable getDrawable(String source) {
urlDrawable = new UrlImageDownloader(c.getResources(), source);
if (Build.VERSION.SDK_INT >= 21) {
urlDrawable.mDrawable = c.getResources().getDrawable(R.drawable.default_thumb,null);
} else {
urlDrawable.mDrawable = c.getResources().getDrawable(R.drawable.default_thumb);
}
ImageLoader.getInstance().loadImage(source, new SimpleListener(urlDrawable));
return urlDrawable;
}
private class SimpleListener extends SimpleImageLoadingListener {
UrlImageDownloader mUrlImageDownloader;
public SimpleListener(UrlImageDownloader downloader) {
super();
mUrlImageDownloader= downloader;
}
@Override
public void onLoadingStarted(String imageUri, View view) {
Log.d("DEBUG", "onLoadingStarted called");
//spinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
//spinner.setVisibility(View.GONE);
int width = loadedImage.getWidth();
int height = loadedImage.getHeight();
int newWidth = width;
int newHeight = height;
if (width > container.getWidth()) {
newWidth = container.getWidth();
newHeight = (newWidth * height)/width;
}
if (view != null) {
container.getLayoutParams().width = newWidth;
container.getLayoutParams().height = newHeight;
}
Drawable result = new BitmapDrawable(c.getResources(), loadedImage);
result.setBounds(0, 0, newWidth, newHeight);
mUrlImageDownloader.setBounds(1, 1, newWidth, newHeight);
mUrlImageDownloader.mDrawable = result;
container.invalidate();
container.setText(container.getText());
if (view != null) {
//Don't know if this is the right place to listener for clicks but it ain't working
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TheImage", "Image Clicked");
}
});
}
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) {
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't be decoded";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
// Toast.makeText(view.getContext(), message, Toast.LENGTH_SHORT).show();
Log.w("UILImageGetter", message);
//spinner.setVisibility(View.GONE);
}
}
private class UrlImageDownloader extends BitmapDrawable {
public Drawable mDrawable;
public UrlImageDownloader(Resources resources, String filepath) {
super(resources, filepath);
mDrawable = new BitmapDrawable(resources, filepath);
}
@Override
public void draw(Canvas canvas) {
if (mDrawable != null) {
mDrawable.draw(canvas);
}
}
}
}
, 당신이 좀 도와 주 시겠어요입니까?
감사합니다. – X09