android - studio - cambiar la imagen de fondo de Framelayout a través de URL
framelayout android ejemplo (4)
Algo interesado, (nunca lo intenté pero debería funcionar)
FrameLayout fm = (FrameLayout)findViewById(R.id.FrameLayout01);
Drawable drw = ImageOperations(this,url,filename)
fm.setBackgroundDrawable(drw)
Convierta su url de imagen en Drawable usando
private Drawable ImageOperations(Context ctx, String url, String saveFilename) {
try {
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, saveFilename);
return d;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
Prueba esto y hazme saber lo que sucede ...
¿es posible usar una url
para establecer el background
de framelayout
?
Ejemplo: quiero usar la URL como esta como mi fondo de framelayout
.
Lo que realmente quiero lograr es que cuando se cargue mi actividad, obtenga la imagen de mi dominio y la use como imagen de fondo de mi framelayout. Pude hacer esto pero utilicé una vista de imagen y un botón.
a continuación está el código que uso:
public class MyAppActivity extends Activity {
ImageView imView;
String imageUrl= "http://www.mydomain.com/resource/images/";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bt3= (Button)findViewById(R.id.postbutton);
bt3.setOnClickListener(getImgListener);
}
View.OnClickListener getImgListener = new View.OnClickListener()
{
public void onClick(View view) {
downloadFile(imageUrl+"image"+".png");
Log.i("im url",imageUrl+"image"+".png");
}
};
Bitmap bmImg;
void downloadFile(String fileUrl){
URL myFileUrl =null;
try {
myFileUrl= new URL(fileUrl);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
imView.setImageBitmap(bmImg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
y aquí están mis códigos XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/rakistaradiobg"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="98dp"
android:layout_gravity="bottom|center"
android:scaleType="fitXY"
android:src="@drawable/btnbg" />
<Button
android:id="@+id/postbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="Button" />
aquí está el código por el que puedes obtener la imagen en mapa de bits desde la URL
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
y Usar esto puede convertir mapa de bits a dibujable ...
y después de obtener dibujable aplicar en el diseño como
framelyt.setBackgroundDrawable(d);
private RelativeLayout myRelativeLauout;
myRelativeLauout = (RelativeLayout)findViewById(R.id.rlBg);
new LoadBackground("http://www.tmonews.com/wp-content/uploads/2012/10/androidfigure.jpg",
"androidfigure").execute();
private class LoadBackground extends AsyncTask<String, Void, Drawable> {
private String imageUrl , imageName;
public LoadBackground(String url, String file_name) {
this.imageUrl = url;
this.imageName = file_name;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Drawable doInBackground(String... urls) {
try {
InputStream is = (InputStream) this.fetch(this.imageUrl);
Drawable d = Drawable.createFromStream(is, this.imageName);
return d;
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
private Object fetch(String address) throws MalformedURLException,IOException {
URL url = new URL(address);
Object content = url.getContent();
return content;
}
@Override
protected void onPostExecute(Drawable result) {
super.onPostExecute(result);
myRelativeLauout.setBackgroundDrawable(result);
}
}