第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關(guān)于PhotoView在統(tǒng)一頁面加載全屏圖片出現(xiàn)圖片位置偏移的問題解決

標簽:
Android

现在很多应用都会使用到的功能,photoview在加载本地图片时不会出现图片位置偏移到一侧,而加载网络图片时因为有一个加载的过程导致出现问题。下面代码时viewpager中加载图片的代码:spacer.gifspacer.gif 

gv.setAdapter(new BaseAdapter() {

            @Override
            public int getCount() {return imgs.length;}
            @Override
            public Object getItem(int position) {return null;}
            @Override
            public long getItemId(int position) {return 0;}
            @Override
            public View getView(final int position, View convertView, ViewGroup parent) {
                final PhotoView p = new PhotoView(PhotoBrowse2.this);
                p.setLayoutParams(new AbsListView.LayoutParams((int) (getResources().getDisplayMetrics().density * 100), (int) (getResources().getDisplayMetrics().density * 100)));
                p.setScaleType(ImageView.ScaleType.CENTER_CROP);
                String uri="http://120.77.244.86:8000/images/"+imgs[position];
                //1.加载大家都知道的(注释掉)
		//Glide.with(PhotoBrowse2.this).load(uri).into(p);
                //2.
                Glide.with(PhotoBrowse2.this).load(uri).asBitmap().into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        p.setImageBitmap(resource);
                    }
                });
                // 把PhotoView当普通的控件把触摸功能关掉
                p.disenable();
                return p;
            }
        });
我们会在当前一个页面写一个隐藏的布局包含PhototView,当我们点击Viewpager时就会显示出来,点击PhotoView就会隐藏。根据出现
的问题,我第一个想到的是因为动画显示出隐藏PhototView的同时正在加载网络图片资源。那我们就应该在加载完图片后在去动画显示
PhotoView。
第一种方法是没有做处理的。
第二种方法是在into方法中使用GlideDrawableImageViewTarget方法在回调中开启隐藏
PhototView,但是因为在GridView中点击才触发的导致此方法无法正常执行。
第三种方法是添加listener()监听,在onResourceReady的回调中动态显示PhototView,效果不但没有解决反而更加严重每次都会便宜了,
第四种下面没有我就直接说了,在gv中以加载bitmap的方式设置bitmap,我们可以保存bitmap。在gv点击事件中直接设置bitmap对象就可以解决问题了。
第五种方法是先获取bitmap然后设置到photview动画显示即可解决,
gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
        final PhotoView p = (PhotoView) view;
        mInfo = p.getInfo();
        String uri="http://120.77.244.86:8000/images/"+imgs[position];
        //1.第一种方法是
        Glide.with(PhotoBrowse2.this).load(uri).into(mPhotoView);
        mBg.startAnimation(in);
        mBg.setVisibility(View.VISIBLE);
        mParent.setVisibility(View.VISIBLE);
        mPhotoView.animaFrom(mInfo);
        //2.
        Glide.with(PhotoBrowse2.this).load(uri).into(new GlideDrawableImageViewTarget(mPhotoView){
            @Override
            public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> animation) {
                super.onResourceReady(resource, animation);
                mBg.startAnimation(in);
                mBg.setVisibility(View.VISIBLE);
                mParent.setVisibility(View.VISIBLE);
                mPhotoView.animaFrom(mInfo);
            }
        });
        //3.
        Glide.with(PhotoBrowse2.this).load(uri).listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                return false;
            }
            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                mBg.startAnimation(in);
                mBg.setVisibility(View.VISIBLE);
                mParent.setVisibility(View.VISIBLE);
                mPhotoView.animaFrom(mInfo);
                return false;
            }
        }).into(mPhotoView);
        //5.
        Glide.with(PhotoBrowse2.this).load(uri).asBitmap().into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                mPhotoView.setImageBitmap(resource);
                mBg.startAnimation(in);
                mBg.setVisibility(View.VISIBLE);
                mParent.setVisibility(View.VISIBLE);
                mPhotoView.animaFrom(mInfo);
            }
        });
    }
});[object Object][object Object][object Object][object Object][object Object]
总结:4,5两种方法可以解决,2,3两种无法解决。我使用的PhotoView控件是来自sdsadsadasdasd。地址是http://www.apkbus.com/thread-271645-1-1.html			他的PhtotView控件代码量非常少推荐使用。

5ba39fdc0001784703300601.jpg

原文链接:http://www.apkbus.com/blog-874691-63186.html

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消