小编T-R*_*x96的帖子

缩放PhotoView的监听器

我正在使用Chris Bane的PhotoView在ViewPager中显示ImageViews.我想在用户放大图像时禁用ViewPager的滚动.我已经找到了这个Hacky ViewPager,可以通过调用toggleLock()来启用/禁用滚动.

public class HackyViewPager extends ViewPager {

    private boolean isLocked;

    public HackyViewPager(Context context) {
        super(context);
        isLocked = false;
    }

    public HackyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
        isLocked = false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (!isLocked) {
            try {
                return super.onInterceptTouchEvent(ev);
            }
            catch (IllegalArgumentException e) {
                e.printStackTrace();
                return false;
            }
        }
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return !isLocked && super.onTouchEvent(event);
    }

    public void toggleLock() {
        isLocked = …
Run Code Online (Sandbox Code Playgroud)

android imageview android-viewpager

9
推荐指数
1
解决办法
1790
查看次数

使用OkHttp将大量图像下载到SD卡

因此,我的应用程序的一部分使用IntentService将大量(~1600)图像下载到SdCard.我以前使用过Glide,但现在想切换到OkHttp,因为它似乎更快,耗电更少.这是我目前的代码:

for (int i = 1; i < 1600; i++) {
        try {
            Request request = new Request.Builder()
                    .url(imageUrls[i])
                    .build();

            Response response = client.newCall(request).execute();
            File testDirectory = new File(Environment.getExternalStorageDirectory() 
                                                                  + "/downloadTest");
            if (!testDirectory.exists())
                 testDirectory.mkdirs();
            OutputStream outputStream = new FileOutputStream(new File(testDirectory, 
                                                          "testImage" + i + ".png"));
            InputStream inputStream = response.body().byteStream();
            byte[] buffer = new byte[1024];
            int read;
            while ((read = inputStream.read(buffer, 0, buffer.length)) >= 0)
                outputStream.write(buffer, 0, read);
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以优化这段代码,使下载速度更快?

performance android image okhttp

0
推荐指数
1
解决办法
1833
查看次数