我正在开发一个应连接到URL的应用程序,将其检索为位图,然后在基于PanoramaGL库的查看器中显示。
问题是,即使Log表示已捕获图像,显示也将保持空白。
这是我用来检索位图的代码,也遵循在How to load an ImageView by URL in Android?中找到的非常详细的答案。 -实际上,我想直接读取图像而无需缓存等。
正如您将看到的,在我刚刚开始开发时,大部分代码都来自在线教程。
PanoramaActivity.java(为了测试它可以用作MainActivity)
import java.io.InputStream;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.panoramagl.PLImage;
import com.panoramagl.PLSpherical2Panorama;
import com.panoramagl.PLView;
public class PanoramaActivity extends PLView {
Private static final String TAG = "+++++++++++++++";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.panorama_activity_main);
new DownloadImageTask(this).execute("http://www.pianetacellulare.it/UserFiles/image/Android/Jelly%20Bean/photo_sphere_esempio.jpg");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
PanoramaActivity pan;
public DownloadImageTask(PanoramaActivity act) {
this.pan = act;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
Log.d(TAG,"onPostExecute");
PLSpherical2Panorama panorama = new PLSpherical2Panorama();
panorama.setImage(new PLImage(result));
pan.setPanorama(panorama);
}
}
}
我已经创建了通过PanoramaActivity传递的构造函数,因为我认为直到onPostExecute方法都需要应用程序流程,在这里我需要找到一种显示图像的方法。
如果我错了或有更好的方法,请告诉我。
我还将发布Panorama_activity_main.xml布局进行测试:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".PanoramaActivity" >
</RelativeLayout>
任何提示表示赞赏,在此先感谢:)
更新。我使用ImageView而不是PLView尝试了相同的AsyncTask类,并且图像出来了,所以图像的下载正确完成了。使用PanoramaGL时有些错误
最佳答案
去掉
setContentView(R.layout.panorama_activity_main);
它正在覆盖图像。 ->即使我不理解为什么会这样
最重要的是..确保要链接的图像符合以下要求:
PanoramaGL仅支持大小为2的幂的图像。 2048x1024、1024x1024、1024x512、512x512、512x256、256x256、256x128。