无法在curlview中显示图像

时间:2015-02-03 05:47:48

标签: android

我正在使用curlview进行卷曲效果我的数据包含curlview中每个页面的图像我的代码我得到了没有图像的空白页面我在imageurllist中做了json解析我如何获取图像而不是空白页面。

这是我的代码。

public class CurlActivity extends Activity {

    private CurlView mCurlView;
    public String cid;
    public ArrayList<String>magazineidlist;
    public String middata;
    public String url;
    public String imgurl;
    public Bitmap bitmap;
    public  ImageLoader imageloder;
    public ImageView imageView;
    public ArrayList<String>imageurllist;
   public GridImageAdapter gadapter;
   public CurlActivity c;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_curl);


        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        getAllMagazineById();
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        if(bundle!=null){
            cid = bundle.getString("mid");
            Log.d("magazine id", cid);
        }


        int index = 0;
        if (getLastNonConfigurationInstance() != null) {
            index = (Integer) getLastNonConfigurationInstance();
        }
        mCurlView = (CurlView) findViewById(R.id.curl);




    }

    @Override
    public void onPause() {
        super.onPause();
        mCurlView.onPause();
    }

    @Override
    public void onResume() {
        super.onResume();
        mCurlView.onResume();
    }

    @Override
    public Object onRetainNonConfigurationInstance() {
        return mCurlView.getCurrentIndex();
    }

    /**
     * Bitmap provider.
     */
    private class PageProvider implements CurlView.PageProvider {
        // Bitmap resources.
            private int[] mBitmapIds = { R.layout.sample};

        //LinearLayout llout = (LinearLayout) findViewById(R.layout.sample);
        @SuppressWarnings("unused")
        //ImageView imageView = (ImageView) findViewById(R.id.imageviewsample);

            @Override
        public int getPageCount() {

                return imageurllist.size();
        }

        private Bitmap loadBitmap(int width, int height, int index) {
            LayoutInflater inflater = 
                    (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);


            Log.d("index",String.valueOf(index));
            View v = inflater.inflate((mBitmapIds[index]),null);
            v.measure(
                    MeasureSpec.makeMeasureSpec(width,MeasureSpec.EXACTLY),
                    MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY));
            v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
            Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight()
                    ,Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            v.draw(c);          
            return b;
        }

        @Override
        public void updatePage(CurlPage page, int width, int height, int index) {

            switch (index) {
            // First case is image on front side, solid colored back.
            default:

                Bitmap front = loadBitmap(width, height, 0);
                page.setTexture(front, CurlPage.SIDE_FRONT);
                page.setColor(Color.rgb(180, 180, 180), CurlPage.SIDE_BACK);
                break;

                /*// Third case is images on both sides.
            case 2: {
                Bitmap front = loadBitmap(width, height, 1);
                Bitmap back = loadBitmap(width, height, 3);
                page.setTexture(front, CurlPage.SIDE_FRONT);
                page.setTexture(back, CurlPage.SIDE_BACK);
                break;
            }
            // Fourth case is images on both sides - plus they are blend against
            // separate colors.
            case 3: {
                Bitmap front = loadBitmap(width, height, 2);
                Bitmap back = loadBitmap(width, height, 1);
                page.setTexture(front, CurlPage.SIDE_FRONT);
                page.setTexture(back, CurlPage.SIDE_BACK);
                page.setColor(Color.argb(127, 170, 130, 255),
                        CurlPage.SIDE_FRONT);
                page.setColor(Color.rgb(255, 190, 150), CurlPage.SIDE_BACK);
                break;
            }
            // Fifth case is same image is assigned to front and back. In this
            // scenario only one texture is used and shared for both sides.
            case 4:
                Bitmap front = loadBitmap(width, height, 0);
                page.setTexture(front, CurlPage.SIDE_BOTH);
                page.setColor(Color.argb(127, 255, 255, 255),
                        CurlPage.SIDE_BACK);
                break;*/
            }
        }

    }

    /**
     * CurlView size changed observer.
     */
    class SizeChangedObserver implements CurlView.SizeChangedObserver {
        @Override
        public void onSizeChanged(int w, int h) {
            if (w > h) {
                mCurlView.setViewMode(CurlView.SHOW_TWO_PAGES);
                mCurlView.setMargins(.1f, .05f, .1f, .05f);
            } else {
                mCurlView.setViewMode(CurlView.SHOW_ONE_PAGE);
                //mCurlView.setMargins(.1f, .1f, .1f, .1f);
            }
        }
    }
    public Bitmap GetBitmapfromUrl(String scr) {
        try {
            URL url=new URL(scr);
            HttpURLConnection connection=(HttpURLConnection)url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input=connection.getInputStream();
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 2;
            Bitmap bitmap = BitmapFactory.decodeStream(input, null, options);
            // Bitmap bmp = BitmapFactory.decodeStream(input);
            return bitmap;



        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;

        }
    }
    public void getAllMagazineById() {

        new AsyncTask<Void, Void, String>() {
            ProgressDialog mProgressDialog;

            protected void onPostExecute(String result) {
                mProgressDialog.dismiss();
                magazineidlist = new ArrayList<String>();
                imageurllist = new ArrayList<String>();
                //imageloder = new ImageLoader(CurlActivity.this);
//              LayoutInflater factory = LayoutInflater.from(CurlActivity.this);
//               View child = factory.inflate(R.layout.sample, null);
//               imageView = (ImageView)child.findViewById(R.id.imageviewsample);

                //imageView = (ImageView)findViewById(R.id.imageviewsample);
                try {
                    JSONObject jsob = new JSONObject(result.toString());
                    if (jsob.getString("msg").equalsIgnoreCase("Success")) {
                        JSONArray datajson = jsob.getJSONArray("data");
                        for (int i = 0; i < datajson.length(); i++) {

                            JSONObject c = datajson.getJSONObject(i);
                            middata = c.getString("magazine_id");
                            imgurl = c.getString("image_url");
                            magazineidlist.add(middata);
                            imageurllist.add(imgurl);
                            Log.d("imageurllist value at index" +i, imageurllist.get(i));
                            //imageloder.DisplayImage(imageurllist.get(i),imageView);
                            String url = imageurllist.get(i);
                            Log.d("url val", url);

                        }
                        gadapter = new GridImageAdapter(c, imageurllist);
                        mCurlView.setPageProvider(new PageProvider());
                        mCurlView.setSizeChangedObserver(new SizeChangedObserver());
                        mCurlView.setCurrentIndex(0);
                        mCurlView.setBackgroundColor(0xFF202830);

                    } else if(jsob.getString("msg").equalsIgnoreCase("Failure")) {
                        System.out.println("not a valid data");
                    }
                    else
                    {
                        System.out.println("error");
                    }

                } catch (Exception e) {
                    Log.e("error", "" + e);

                }

            }

            private void startActivity(Intent i) {
                // TODO Auto-generated method stub

            }

            @Override
            protected String doInBackground(Void... arg0) {
                // Creating service handler class instance
                try {
                    HttpPost httppost1 = null;
                    HttpClient httpclient1 = new DefaultHttpClient();

                    httppost1 = new HttpPost(JsonKey.MAIN_URL);

                    // Add your data
                    List<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>(
                            2);
                    nameValuePairs1.add(new BasicNameValuePair("action",
                            "GetMagazinePageImagesbyid"));
                    nameValuePairs1.add(new BasicNameValuePair("iMagezineId",
                            cid));

                    httppost1.setEntity(new UrlEncodedFormEntity(
                            nameValuePairs1));
                    // Execute HTTP Post Request
                    HttpResponse response1 = httpclient1.execute(httppost1);
                    BufferedReader in1 = new BufferedReader(
                            new InputStreamReader(response1.getEntity()
                                    .getContent()));
                    StringBuffer sb1 = new StringBuffer("");
                    String line1 = "";
                    while ((line1 = in1.readLine()) != null) {
                        sb1.append(line1);
                    }
                    in1.close();
                    Log.e(" Get All magazine original data", sb1.toString());
                    return sb1.toString();
                } catch (Exception e) {
                    Log.e("Get All magazine response problem", "" + e);
                    return " ";
                }
            }

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
                mProgressDialog = new ProgressDialog(CurlActivity.this);
                mProgressDialog.setTitle("");
                mProgressDialog.setCanceledOnTouchOutside(false);
                mProgressDialog.setMessage("Please Wait...");
                mProgressDialog.show();

            }
        }.execute();

    }
    public static Bitmap getBitmapFromURL(String src) {
        try {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            // Log exception
            return null;
        }
    }
    Bitmap drawable_from_url(String url) throws java.net.MalformedURLException, java.io.IOException {
        Bitmap x;

        HttpURLConnection connection = (HttpURLConnection)new URL(url) .openConnection();
        connection.setRequestProperty("User-agent","Mozilla/4.0");

        connection.connect();
        InputStream input = connection.getInputStream();

        x = BitmapFactory.decodeStream(input);
        return x;
    }
    public class GridImageAdapter extends BaseAdapter {

        public Context mContext;
        // public final String[] web;
        // final int ImageId[];
        public CurlActivity activity;
        public ImageLoader imageloader;
        // Constructor

        public GridImageAdapter(CurlActivity c, ArrayList<String> imageUrl) {
            // TODO Auto-generated constructor stub
            mContext = c;
            imageurllist = imageUrl;
            imageloader = new ImageLoader(CurlActivity.this);
        }

        public int getCount() {
            return imageurllist.size();
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return 0;
        }

        // create a new ImageView for each item referenced by the Adapter
        public View getView(int position, View convertView, ViewGroup parent) {
            View grid;
            LayoutInflater inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            if (convertView == null) {
                grid = new View(mContext);
                grid = inflater.inflate(R.layout.sample, null);
                ImageView img = (ImageView) grid.findViewById(R.id.imageviewsample);
                imageloader.DisplayImage(imageurllist.get(position), img);

            }

            /*
             * ImageView imageView; if (convertView == null) { imageView = new
             * ImageView(mContext); imageView.setLayoutParams(new
             * GridView.LayoutParams(85, 85));
             * imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
             * imageView.setPadding(8, 8, 8, 8); }
             */else {
                 grid = (View) convertView;
             }

            /*
             * imageView.setImageResource(mThumbIds[position]); return
             * imageView;
             */
            return grid;
        }

        // Keep all Images in array
        /*
         * public Integer[] mThumbIds = { R.drawable.nightlife,
         * R.drawable.coffee, R.drawable.shopping, R.drawable.seeanddo,
         * 
         * };
         */
        public Bitmap StringToBitMap(String encodedString) {
            try {
                byte[] encodeByte = Base64
                        .decode(encodedString, Base64.DEFAULT);
                Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0,
                        encodeByte.length);
                return bitmap;
            } catch (Exception e) {
                e.getMessage();
                return null;
            }
        }

    }

}

0 个答案:

没有答案