Android页面卷曲,图像从web流式传输?

Android页面卷曲,图像从web流式传输?,android,android-layout,opengl-es,Android,Android Layout,Opengl Es,所以,我正在使用这个项目来实现curl功能来创建一本书。但我想在直接从web流式传输图像时实现同样的效果,显然是以异步方式 但是,我需要一个OpenGL,进度条,来实现同样的功能。但是我没有任何OPENGL方面的知识,所以我如何调整代码并实现我想要的功能呢 另外,看看这个问题,更清楚地了解我想要实现的目标 包fi.harism.curl; 公共类活动扩展了活动{ 私有卷视图mCurlView; 按钮btn; 私人水渠; 可提取d=null; 文本视图多行文字; 列出数据; 媒体播放器mPlay

所以,我正在使用这个项目来实现curl功能来创建一本书。但我想在直接从web流式传输图像时实现同样的效果,显然是以异步方式

但是,我需要一个
OpenGL,进度条
,来实现同样的功能。但是我没有任何OPENGL方面的知识,所以我如何调整代码并实现我想要的功能呢

另外,看看这个问题,更清楚地了解我想要实现的目标

包fi.harism.curl;
公共类活动扩展了活动{
私有卷视图mCurlView;
按钮btn;
私人水渠;
可提取d=null;
文本视图多行文字;
列出数据;
媒体播放器mPlayer;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int指数=0;
如果(getLastNonConfigurationInstance()!=null){
索引=(整数)GetLastNonConfiguration实例();
}
mCurlView=(CurlView)findviewbyd(R.id.curl);
setPageProvider(新的PageProvider());
mCurlView.setSizeChangedObserver(新的SizeChangedObserver());
mCurlView.setCurrentIndex(索引);
mCurlView.setBackgroundColor(Color.GREEN);
}
@凌驾
公共无效暂停(){
super.onPause();
mCurlView.onPause();
}
@凌驾
恢复时公开作废(){
super.onResume();
mCurlView.onResume();
}
@凌驾
公共对象OnRetainOnConfiguration实例(){
返回mCurlView.getCurrentIndex();
}
/**
*位图提供程序。
*/
私有类PageProvider实现CurlView.PageProvider{
私有字符串[]mBitmapStrings={”http://myserver.com/image/img%20p1.png",
"http://myserver.com/image/img%20p2.png",
"http://myserver.com/image/img%20p3.png",
"http://myserver.com/image/img%20p4.png"};
@凌驾
public int getPageCount(){
返回mBitmapStrings.length;
}
私有位图loadBitmap(int-width、int-height、int-index)引发畸形的异常,IOException{
位图b=位图。创建位图(宽度、高度、,
位图.Config.ARGB_8888);
b、 擦除颜色(0xFFFFFF);
画布c=新画布(b);
if(索引==mBitmapStrings.length)
{
指数=0;
}
Drawable d=新的BitmapDrawable(可从url(mbitMapString[index])中提取);
整型裕度=7;
int-border=3;
Rect r=新的Rect(边距、边距、宽度-边距、高度-边距);
int imageWidth=r.width()-(边框*2);
int imageHeight=imageWidth*d.getIntrinsicHeight()
/d.getIntrinsicWidth();
如果(图像高度>r.高度()-(边框*2)){
图像高度=r.高度()-(边框*2);
imageWidth=imageHeight*d.getIntrinsicWidth()
/d.getIntrinsicHeight();
}
r、 左+=((r.width()-imageWidth)/2)-边框;
r、 右=右+图像宽度+边框+边框;
r、 顶部+=((r.高度()-图像高度)/2)-边框;
r、 底部=r.顶部+图像高度+边框+边框;
油漆p=新油漆();
p、 设置颜色(0xFFC0);
c、 drawRect(r,p);
r、 左+=边框;
r、 右-=边界;
r、 顶部+=边框;
r、 底部-=边框;
d、 立根(r);
d、 抽签(c);
返回b;
}
@凌驾
公共void updatePage(页面卷曲、整型宽度、整型高度、整型索引){
位图前端;
试一试{
前=加载位图(宽度、高度、索引);
页面设置结构(正面、卷曲页面、侧面和正面);
page.setColor(Color.rgb(180、180、180),CurlPage.SIDE_BACK);
}捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
/**
*卷曲视图大小已更改。
*/
私有类SizeChangedObserver实现了CurlView.SizeChangedObserver{
@凌驾
尺寸更改后的公共空间(内部w、内部h){
/*如果(w>h){
mCurlView.setViewMode(CurlView.SHOW_两页);
mCurlView.setMargins(.1f、.05f、.1f、.05f);
}否则{*/
mCurlView.setViewMode(CurlView.SHOW_一页);
//mCurlView.setMargins(.1f、.1f、.1f、.1f);
mCurlView.setMargins(0,0,0,0);
//}
}
}
位图可绘制的\u from\u url(字符串url)引发java.net.MalformedURLException、java.io.IOException{
位图x;
HttpURLConnection连接=(HttpURLConnection)新URL(URL).openConnection();
setRequestProperty(“用户代理”、“Mozilla/4.0”);
connection.connect();
InputStream输入=连接。getInputStream();
x=BitmapFactory.decodeStream(输入);
返回x;
}
}
----编辑----

另外,我正在使用android查询库来处理异步图像/文件 加载。如果发生以下情况,将其用于本项目是否可行 从网络上传输图像。怎么做


“”,“”,“”,“”,“”此所有链接在浏览器中不显示图像。请检查您的浏览器。这只是为了测试,因为我无法填充
package fi.harism.curl;


public class CurlActivity extends Activity {

    private CurlView mCurlView;
    Button btn;
    private AQuery aq;
    Drawable d =null;
    TextView mText;
    List<String> data;
    MediaPlayer mPlayer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        int index = 0;
        if (getLastNonConfigurationInstance() != null) {
            index = (Integer) getLastNonConfigurationInstance();
        }

        mCurlView = (CurlView) findViewById(R.id.curl);
        mCurlView.setPageProvider(new PageProvider());
        mCurlView.setSizeChangedObserver(new SizeChangedObserver());
        mCurlView.setCurrentIndex(index);
        mCurlView.setBackgroundColor(Color.GREEN);
    }

    @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 {

        private String[] mBitmapStrings={"http://myserver.com/image/img%20p1.png",
                                          "http://myserver.com/image/img%20p2.png",
                                          "http://myserver.com/image/img%20p3.png",
                                          "http://myserver.com/image/img%20p4.png"};

        @Override
        public int getPageCount() {
            return mBitmapStrings.length;
        }


        private Bitmap loadBitmap(int width, int height, int index) throws MalformedURLException, IOException {
            Bitmap b = Bitmap.createBitmap(width, height,
                    Bitmap.Config.ARGB_8888);
            b.eraseColor(0xFFFFFFFF);
            Canvas c = new Canvas(b);

            if(index==mBitmapStrings.length)
               {
                index=0;
               }

            Drawable d = new BitmapDrawable(drawable_from_url(mBitmapStrings[index]));

            int margin = 7; 
            int border = 3;
            Rect r = new Rect(margin, margin, width - margin, height - margin);

            int imageWidth = r.width() - (border * 2);
            int imageHeight = imageWidth * d.getIntrinsicHeight()
                    / d.getIntrinsicWidth();
            if (imageHeight > r.height() - (border * 2)) {
                imageHeight = r.height() - (border * 2);
                imageWidth = imageHeight * d.getIntrinsicWidth()
                        / d.getIntrinsicHeight();
            }

            r.left += ((r.width() - imageWidth) / 2) - border;
            r.right = r.left + imageWidth + border + border;
            r.top += ((r.height() - imageHeight) / 2) - border;
            r.bottom = r.top + imageHeight + border + border;

            Paint p = new Paint();
            p.setColor(0xFFC0C0C0);
            c.drawRect(r, p);
            r.left += border;
            r.right -= border;
            r.top += border;
            r.bottom -= border;

            d.setBounds(r);
            d.draw(c);

            return b;
        }

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

                Bitmap front;
                try {
                    front = loadBitmap(width, height, index);
                    page.setTexture(front, CurlPage.SIDE_FRONT);
                    page.setColor(Color.rgb(180, 180, 180), CurlPage.SIDE_BACK);
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
    }

    /**
     * CurlView size changed observer.
     */
    private 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);
                mCurlView.setMargins(0,0,0,0);

            //}
        }
    }

    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 CurlActivity extends Activity {

    private CurlView mCurlView;
   Bitmap y;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int index = 0;
        if (getLastNonConfigurationInstance() != null) {
            index = (Integer) getLastNonConfigurationInstance();
        }
        mCurlView = (CurlView) findViewById(R.id.curl);
        mCurlView.setPageProvider(new PageProvider());
        mCurlView.setSizeChangedObserver(new SizeChangedObserver());
        mCurlView.setCurrentIndex(index);
        mCurlView.setBackgroundColor(0xFF202830);


    }

    @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.drawable.obama, R.drawable.road_rage,
                R.drawable.taipei_101, R.drawable.world };*/
        private String[] mBitmapIds = {"your url","your url",
                "your urlg", "your url" };    //your image url

        @Override
        public int getPageCount() {
            return 5;
        }

        private Bitmap loadBitmap(int width, int height, int index) {
            Bitmap b = Bitmap.createBitmap(width, height,
                    Bitmap.Config.ARGB_8888);
            b.eraseColor(0xFFFFFFFF);
            Canvas c = new Canvas(b);
            //Uri url = Uri.parse("http://stackoverflow.com");
            //Drawable d =getResources().getDrawable(url);
            //Drawable d = getResources().getDrawable(mBitmapIds[index]);
            try {
                drawableFromUrl(mBitmapIds[index]);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }           
            Drawable d = new BitmapDrawable(getResources(),y);
            //Drawable d = new BitmapDrawable(drawable_from_url(y));
            int margin = 7;
            int border = 3;
            Rect r = new Rect(margin, margin, width - margin, height - margin);

            int imageWidth = r.width() - (border * 2);
            int imageHeight = imageWidth * d.getIntrinsicHeight()
                    / d.getIntrinsicWidth();
            if (imageHeight > r.height() - (border * 2)) {
                imageHeight = r.height() - (border * 2);
                imageWidth = imageHeight * d.getIntrinsicWidth()
                        / d.getIntrinsicHeight();
            }

            r.left += ((r.width() - imageWidth) / 2) - border;
            r.right = r.left + imageWidth + border + border;
            r.top += ((r.height() - imageHeight) / 2) - border;
            r.bottom = r.top + imageHeight + border + border;

            Paint p = new Paint();
            p.setColor(0xFFC0C0C0);
            c.drawRect(r, p);
            r.left += border;
            r.right -= border;
            r.top += border;
            r.bottom -= border;

            d.setBounds(r);
            d.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.
            case 0: {
                Bitmap front = loadBitmap(width, height, 0);
                page.setTexture(front, CurlPage.SIDE_FRONT);
                page.setColor(Color.rgb(180, 180, 180), CurlPage.SIDE_BACK);
                break;
            }
            // Second case is image on back side, solid colored front.
            case 1: {
                Bitmap back = loadBitmap(width, height, 2);
                page.setTexture(back, CurlPage.SIDE_BACK);
                page.setColor(Color.rgb(127, 140, 180), CurlPage.SIDE_FRONT);
                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.
     */
    private 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  void drawableFromUrl(String url) throws IOException {
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        connection.connect();
        InputStream input = connection.getInputStream();

        y = BitmapFactory.decodeStream(input);

    }
}