当前位置: 首页 > 知识库问答 >
问题:

在imageview中自动更改图像

邢乐
2023-03-14

我有一个图像视图和一堆图像,但问题是我想一个接一个地显示图像视图中的所有图像,图像应该像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);
}
}

共有3个答案

武成和
2023-03-14

我想你可能会做这样的事

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子类,该子类实现runnable,并在ImageView的子类中完成所有这一切

赫连瀚
2023-03-14

下面是链接...您可以使用View Pager概念实现此功能

链接1

荆亦
2023-03-14

使用下面的代码。

创建图像数组。

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.

 类似资料:
  • 我试图改变我的设备的图像资源在回收视图中的特定位置,每当我点击它(点击图像,而不是项目)。我试图把setOnClickListener()放在onBindViewHolder()方法中,但只有最后一项受到影响。这是我的回收器视图 这里是我的适配器: 我的观众: 我的数据类: 当我点击设备的图像时,如果它处于打开状态(flag=true),则更改为“fan_off”。如果关闭,请切换到“fan_on

  • 我的代码出错了。为什么胡虎123123

  • 我对javafx非常陌生。我正试图用scene builder创建一个有趣的纸牌游戏应用程序,但在更改ImageView组件的图像时遇到了问题。 src文件夹包含两个包,一个用于所有图像,另一个包含所有代码。 在控制器类中,我尝试使用以下多种组合来更改图像,其中卡是组件,它与中的匹配:

  • 当我以编程方式更改图像时,它会在原来在布局文件中设置的旧图像的顶部显示新图像? 这是我的布局文件的一个片段: 以及设置imageView的代码: 我错过了什么?

  • 我已经创建了一个自定义 类,并且当用户单击它时,我正在尝试更改 ,但我能够从该类调用 此外,我还想像第二个一样进行存储。我的意思是,我的自定义具有相同的starterresource,但当单击它时,它必须是动态的,例如: ImageView1 ic_launcher(用户尚未单击它) ImageView1 ic_user(用户已单击它) 你能指导如何做到这一点吗? 这是我的自定义类:

  • 我正在将图像设置为ImageView,但是图像不是从设备存储中拾取的,图像是由服务器发送的,我想在将图像设置到ImageView之前了解图像的方向。因此,是否可以使用其url和ExifInterface检查来自服务器的jpg图像的方向,然后根据需要更改其方向以设置为imageview?