ورود

View Full Version : نمایش تصویر gif قرار گرفته در اینترنت در برنامه اندرویدی



mehdilove09
چهارشنبه 05 آذر 1393, 08:25 صبح
من از آموزش های زیادی استفاده کردم ولی هر کدوم یه ایرادایی دارن مثلا روی بعضی گوشیا کار میکنه ولی روی بعضی دیگه نه.بهترین آموزشش هم استفاده از کتابخانه ion هست که ارو میده .اگر سورسی سراغ دارید بفرمایید

tux-world
چهارشنبه 05 آذر 1393, 10:52 صبح
این از کتابخونه (https://github.com/frapontillo/ImageViewEx)و این هم از یه مثال ساده

import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.graphics.drawable.*;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.*;

import java.io.IOException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;

public class BitmapDecode extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}

private static class SampleView extends View {
private Bitmap mBitmap;
private Bitmap mBitmap2;
private Bitmap mBitmap3;
private Bitmap mBitmap4;
private Drawable mDrawable;

private Movie mMovie;
private long mMovieStart;

private static byte[] streamToBytes(InputStream is) {
ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
byte[] buffer = new byte[1024];
int len;
try {
while ((len = is.read(buffer)) >= 0) {
os.write(buffer, 0, len);
}
} catch (java.io.IOException e) {
}
return os.toByteArray();
}

public SampleView(Context context) {
super(context);
setFocusable(true);

java.io.InputStream is;
is = context.getResources().openRawResource(R.drawable. beach);

BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bm;

opts.inJustDecodeBounds = true;
bm = BitmapFactory.decodeStream(is, null, opts);

// now opts.outWidth and opts.outHeight are the dimension of the
// bitmap, even though bm is null

opts.inJustDecodeBounds = false; // this will request the bm
opts.inSampleSize = 4; // scaled down by 4
bm = BitmapFactory.decodeStream(is, null, opts);

mBitmap = bm;

// decode an image with transparency
is = context.getResources().openRawResource(R.drawable. frog);
mBitmap2 = BitmapFactory.decodeStream(is);

// create a deep copy of it using getPixels() into different configs
int w = mBitmap2.getWidth();
int h = mBitmap2.getHeight();
int[] pixels = new int[w*h];
mBitmap2.getPixels(pixels, 0, w, 0, 0, w, h);
mBitmap3 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_8888);
mBitmap4 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_4444);

mDrawable = context.getResources().getDrawable(R.drawable.butt on);
mDrawable.setBounds(150, 20, 300, 100);

is = context.getResources().openRawResource(R.drawable. animated_gif);
if (true) {
mMovie = Movie.decodeStream(is);
} else {
byte[] array = streamToBytes(is);
mMovie = Movie.decodeByteArray(array, 0, array.length);
}
}

@Override protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFCCCCCC);

Paint p = new Paint();
p.setAntiAlias(true);

canvas.drawBitmap(mBitmap, 10, 10, null);
canvas.drawBitmap(mBitmap2, 10, 170, null);
canvas.drawBitmap(mBitmap3, 110, 170, null);
canvas.drawBitmap(mBitmap4, 210, 170, null);

mDrawable.draw(canvas);

long now = android.os.SystemClock.uptimeMillis();
if (mMovieStart == 0) { // first time
mMovieStart = now;
}
if (mMovie != null) {
int dur = mMovie.duration();
if (dur == 0) {
dur = 1000;
}
int relTime = (int)((now - mMovieStart) % dur);
mMovie.setTime(relTime);
mMovie.draw(canvas, getWidth() - mMovie.width(),
getHeight() - mMovie.height());
invalidate();
}
}
}
}

javad_gol
شنبه 08 آذر 1393, 01:16 صبح
به نظرم من فریم هاتون رو اماده کنید و از یک viewFlipper استفاده کنید،فریم ها میشه از منابع برنامه یا فایل های حافظه باشه
myViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
for (int i = 0; i < sNamelist.length; i++) {
ImageView imageView=new ImageView(SampleActivity.this);
imageView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
imageView.setImageDrawable(Drawable.createFromPath (pictureDirectory.getPath() + '/' + sNamelist[i]));
myViewFlipper.addView(imageView);
}
myViewFlipper.setAutoStart(true);
myViewFlipper.setFlipInterval(3000);
myViewFlipper.startFlipping();

mehdilove09
شنبه 08 آذر 1393, 10:08 صبح
باز کار نمیکنه.عکسی که من می خوام نمایش بدم متغییره یعنی ثابت نیست که بشه از این استفاده کرد وگر نه چه نیازی بود از اینترنت گرفته بشه.
اگه کسی از طریق ion تونست پروژه تستش رو بزاره

mehdilove09
دوشنبه 10 آذر 1393, 16:55 عصر
(gif مربوط به یه عکسه متحرکه (
Animated Gif )که نحوه حرکت ایستگاه فضایی رو نشون میده و دارای یه آدرس ایترنتی هست)
اساتید لطفا" راهنمایی کند اگه سورسش رو بزارید ممنون میشم برنامم گیر همینه فقط
با تشکر

mehdilove09
سه شنبه 11 آذر 1393, 16:51 عصر
بلاخره پس از یک ماه روشش رو خودم پیدا کردم.
از کتابخانه ion استفاده کنید توجه کنید که فقط فایل jar یا جاوا که در پایین صفحه دانلود (https://github.com/koush/ion) هستش رو بزارید تو پوشه lib برنامه کافیه دیگه نمی خواد پوشه کتابخونه رو import کنید.
صفحه دانلود (https://github.com/koush/ion)