0

ログイン画面の背景画像用JSONに画像URLが解析されるスプラッシュ画面の時点で解析しました。ログイン画面のサンプルコードは次のとおりです。XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/loginLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_bg"  <!-- I want to change this background dynamically. --> 
android:focusableInTouchMode="true"
android:gravity="center"
tools:context=".activity.LoginActivity" >

<ScrollView
    android:id="@+id/mainScrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

 <!-- .... Here is edit text for login inputs and buttuns for singnup and login. -->

    </LinearLayout>
</ScrollView>   
</RelativeLayout>

上記では、背景に静止画像を配置しましたRelativeLayoutが、画像のURLに従って背景を変更できるようにしたいと考えています。

前もって感謝します。

4

3 に答える 3

0

これは私がそれを行う方法です

このように AsyncTask を呼び出します

 new GetImageFromServer().execute(strUrl);  // strUrl is your URL

ここに AsyncTask クラスがあります

public class GetImageFromServer extends AsyncTask<String, Void, Bitmap>
    {


        private Bitmap image;

        protected void onPreExecute(){
            super.onPreExecute();

        }

        @Override
        protected Bitmap doInBackground(String... params){
            try{

                URL urli = new URL(params[0].trim());
                URLConnection ucon = urli.openConnection();
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 2;


                image = BitmapFactory.decodeStream(ucon.getInputStream(),null,options);

            } catch (MalformedURLException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }
            return image;  //<<< return Bitmap
        }
        @Override
        protected void onPostExecute(Bitmap result){ 

             RelativeLayout relative = (RelativeLayout) findViewById(R.id.loginLayout);
             Drawable dr = new BitmapDrawable(result);
             relative.setBackgroundDrawable(dr);

            }


    }
于 2014-08-06T04:31:05.887 に答える
0

この方法を試してみてください。これが問題の解決に役立つことを願っています。

  1. ここから最新の AndroidQuery jar をダウンロードします。

  2. この jar を libs フォルダーに置き、jar を右クリックして [ビルド パス] -> [ビルド パスに追加] をクリックします。

  3. この例を使用する方法:

    AQuery androidQuery = 新しい AQuery(this);

    androidQuery.ajax(url.trim(), Bitmap.class, 0, new AjaxCallback<Bitmap>() {
         @Override
         public void callback(String url, Bitmap object, AjaxStatus status) {
             super.callback(url, object, status);
             yourRelativeLayout.setBackground(new BitmapDrawable(object));
         }
    });
    
于 2014-08-06T04:23:01.727 に答える