1

私の問題は次のとおりです。次のようなテキスト ビューに画像を読み込もうとしています。

URLImageParser p = new URLImageParser(textView, this);     
Spanned htmlSpan = Html.fromHtml(textWithImages, p, null);
textView.setText(htmlSpan);

この例に従いましたhttps://stackoverflow.com/a/7442725/1835251

Web から画像を読み込むと、完全に機能します。

SDカードからも特定の画像をロードするようにコードを少し修正しました。

非同期タスクの「doInBackground」メソッドで、これを実装しました:

@Override  
protected Drawable doInBackground(String... params) {  
    String source = params[0];  
    Drawable d = null  
    if(source != null) {  
      if(source.startsWith("/myApp/images/")) {  
          localImage = true;  
      }  
    }  
    if(localImage) {  
      String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();  
      d = Drawable.createFromPath(sdcard+source);  
      d.setBounds(0, 0, 0 + (int)(d.getIntrinsicWidth()), 0   
        + (int) (d.getIntrinsicHeight()));   
      localImage = false;  
    } else {  
      // load images from internet  
    }  
    return d;

localImage は、現在のソースがインターネットからの画像またはローカル画像を「指している」かどうかを判断するために設定されるブール値です。

前に述べたように:インターネットからの画像の読み込みは完全に機能します。しかし、 SD カードから画像を読み込む
、一部の画像が表示されないことがあります。 正しく読み込まれていないかのように、テキスト全体 (画像を含む) が切り取られます。 これは、Samsung S Plus よりも Samsung Galaxy S3 で頻繁に発生することがわかりました。 S3 では、1 枚または 1.5 枚の画像のみをロードして、残りがカットされることがあります。 S Plus は常に 4 つの画像すべてを読み込みますが、テキストの最後の 2 文または 3 文をカットすることはめったにありません。



これは AsyncTask の一種のタイミングの問題だと思いますが、これまで扱ったことはありません。

これは非常に大きな投稿であることは承知していますが、誰かがまだ私を助けてくれることを願っています.

よろしくお願いします

シギー

4

1 に答える 1

1

わかりました私は愚かです...私はそれを解決しました!

インターネットから画像を読み込む場合にのみ AsyncTask が必要であることを忘れていました。ローカル画像の場合、それは必要ありません。

興味のある方への解決策:

ImageGetter imgGetter = new ImageGetter() {
  @Override
  public Drawable getDrawable(String source) {                      
    String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
    Drawable d = Drawable.createFromPath(sdcard+source);                    
    d.setBounds(0, 0, 0 + (int)(d.getIntrinsicWidth()), 0 
      + (int) (d.getIntrinsicHeight())); 
    return d;
  }
};
Spanned htmlSpan = Html.fromHtml(textAndImage, imgGetter, null);
textView.setText(htmlSpan);
于 2012-12-21T12:18:32.530 に答える