java - 如何知道 ImageView 何时完成加载图像?

标签 java android imageview loading

我有一个加载自定义 ImageView ( https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java ) 的 Activity 。在 onCreate 内部,我使用 setImageBitmap 来显示一个巨大的图像(4Mb...)。

问题是此 Activity 需要 4 秒才能显示,但没有我可以放置在 AsyncTask 中的阻塞方法。我的意思是我所有的 Activity 代码都被执行了,但是 Activity 只有在加载图像时才会出现,我不知道它什么时候结束。

我想做的是在 Activity 加载 ProgressDialog 时显示它,并在完成时显示它。

我该如何解决这个问题?这是一些代码。

希望您能理解我的问题,这个问题很难解释。谢谢!

carte.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parentLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<loki.test.lokitest.affichage.TouchImageView 
    android:id="@+id/image"
    android:src="@drawable/loading"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

<Button 
    android:id="@+id/bouton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/textBouton"/>


</RelativeLayout>

CarteActivity.java(耗时4秒的那个)

public class CarteActivity extends Activity implements OnClickListener{

private Group groupe;
private String android_id;
private ConnexionServeur serveur;
private TouchImageView vue;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("Loki","onCreate");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.carte);

    findViewById(R.id.bouton).setOnClickListener(this);

    vue = ((TouchImageView)findViewById(R.id.image));
    vue.setImageBitmap(Singleton.getInstance().getImage());

    groupe = Singleton.getInstance().getGroupe();
    android_id = Singleton.getInstance().getAndroid_id();
    serveur = Singleton.getInstance().getServeur();

    if(groupe != null)
            groupe.afficherGroupe(vue);

    }
}

编辑: 图像加载有:

image = BitmapFactory.decodeResource(context.getResources(), R.drawable.myImage);

但我不认为这是需要时间的代码,当我使用 setImageBitmap 时它已经完成了。我无法弄清楚是什么花费了这么多时间,但我想知道这是否是我可以访问的方法。

最佳答案

  • 让Layout xml顶层容器(Top RelativeLayout)携带两个元素

    1 进度条 - 可见性设置为可见。让它变大并居中

    2 相对布局 - 整个内容主体。先让它不可见。它将位于进度条下方,并将在高度和宽度方面填满整个屏幕。

  • 在 oncreate setContentView 中,然后启动一个 AysncTask,在 doInBackground 中加载 ImageView 。在其 postExecute 中,使内容主体可见,进度条不可见。 只有在加载完成后才会调用 Postexecute

希望这对您有所帮助,您可以将所有这些翻译成代码。

关于java - 如何知道 ImageView 何时完成加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10434695/

相关文章:

java - SQL正则表达式到Java正则表达式的转换器

android - 如何获取联系人照片 URI

Android拖放问题不显示

android - 从字符串中获取android的id资源

android - Fresco - 来自 ControllerListener 的 onIntermediateImageSet 未被调用

java - 使用 Jackson 解析 JSON 返回 null

java - 在 Java 中选择包

java - Android Studio Wifi管理器

android - 是否有任何官方 Android 支持库可以替代 Jake Wharton 的 ViewPagerIndicator

java - 我如何获得菜单点击事件