【问题标题】:Automatically changing images in imageview在 imageview 中自动更改图像
【发布时间】:2014-02-07 10:28:08
【问题描述】:

我有一个 imageview 和一堆图像,但问题是我想在图像视图中一个接一个地显示所有图像,并且图像应该像 gif 动画一样每秒或每 0.2 秒更改一次。

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="97dp"
    android:layout_marginTop="108dp"
    android:src="@drawable/ic_launcher" />



import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {


private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    CookieManager.getInstance().setAcceptCookie(true);//Enable Cookies

    mWebView = (WebView) findViewById(R.id.webView1);
    mWebView.getSettings().setJavaScriptEnabled(true);//Enable Java Script
    mWebView.setWebViewClient(new HelloWebViewClient());
    mWebView.loadUrl("http://www.google.com/"); //Set Home page
    mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);//Remove ScrollBars
    mWebView.getSettings().setDefaultFontSize(12);//Set Font Size
    mWebView.getSettings().setLoadsImagesAutomatically(true);//Enable Image Loading
    mWebView.getSettings().setPluginState(PluginState.ON);//Enable Flash
    mWebView.getSettings().setRenderPriority(RenderPriority.HIGH); //improves Feedback     on touch
    mWebView.setBackgroundColor(0x00000000);//Transparent Screen When Loading
  //mWebView.getSettings().setBuiltInZoomControls(true);//Set Zoom Controls 

    mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);//Set Cache (8mb)
    String appCachePath =     getApplicationContext().getCacheDir().getAbsolutePath();//Set Cache (8mb)
    mWebView.getSettings().setAppCachePath(appCachePath);//Set Cache (8mb)
    mWebView.getSettings().setAllowFileAccess(true);//Set Cache (8mb)
    mWebView.getSettings().setAppCacheEnabled(true);//Set Cache (8mb)
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);//Set Cache (8mb)

    mWebView.setWebViewClient(new WebViewClient() {//Show Image/Page/HTML on Error
    public void onReceivedError(WebView view, int errorCode, String description,     String failingUrl) {//Show Image/Page/HTML on Error
    mWebView.loadUrl("http://www.google.com");//Show WebPage on Error, to show     Offline file, use ("file:///android_asset/error_404.jpg");
        }
    });


}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{


webview.loadUrl(url);
return true;
}
}

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)
  {

 if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())

{
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}

【问题讨论】:

  • 为此你可以使用 ViewPager
  • e sdCard... tu othe hi re... SDcard which...
  • @Apk,请在下面查看我的答案,让我知道它是否有效。
  • @Apk,更新的代码是否有效,请更新我。

标签: android imageview


【解决方案1】:

使用下面的代码。

创建图像数组。

int[] imageArray = { R.drawable.progress_one, R.drawable.progress_two,
            R.drawable.progress_three, R.drawable.progress_four,
            R.drawable.progress_five, R.drawable.progress_six,
            R.drawable.progress_seven, R.drawable.progress_eight,
            R.drawable.progress_nine, R.drawable.progress_ten,
            R.drawable.progress_ele, R.drawable.progress_twe };

然后将这个数组放入处理程序中。

Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                int i = 0;

                public void run() {
                    imageView1.setImageResource(imageArray[i]);
                    i++;
                    if (i > imageArray.length - 1) {
                        i = 0;
                    }
                    handler.postDelayed(this, 2000);
                }
            };
            handler.postDelayed(runnable, 2000);

这将每 2 秒更改一次图像。如果您想要 0.2,则将 2000 替换为 200。

【讨论】:

  • 这一行是红色的 "(Button) findViewById(R.id.imageView1)"
  • void 方法不能在“return -1;”行返回值
  • 去掉 return -1 并把 i = 0;到那里,你的问题就解决了。
【解决方案2】:

以下是链接...您可以使用 View Pager 概念来实现这一点

Link 1

【讨论】:

  • 没有视图寻呼机我们也可以实现,只需使用图像数组并将该数组放入处理程序中。无需使用查看寻呼机。检查我上面的答案。
  • yaar photo aape change honi chahidia ne
【解决方案3】:

我认为你可以这样做

public class ImageChangerThread extends Thread {

    private int  index = 0;
    private boolean mRun = false;

    long changeInterval;
    ArrayList<Drawable> images;
    ImageView mImageView;

    public ImageChangerThread(ImageView mImageView,ArrayList<Drawable> images, long changeInterval) {
        this.mImageView = mImageView;
        this.images = images;
        this.changeInterval = changeInterval;
    }

    @Override
    public void run() {
        while (mRun) {
            if (index >= images.size()) {
                index = 0;
            }

            synchronized(mImageView) {
                mImageView.setImageDrawable(images.get(index++));
            }

            sleep(changeInterval);
        }
    }

    public void startShow(){
        mRun = true;
    }

    public void stopShow() {
        mRun = false;
    }

}

或者更好的是实现 ImageView 子类,它实现了可运行并在 ImageView 的子类中完成所有这些

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多