Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gallery在使用DiscLru缓存和截取时滚动缓慢_Android_Caching_Android Volley - Fatal编程技术网

Android Gallery在使用DiscLru缓存和截取时滚动缓慢

Android Gallery在使用DiscLru缓存和截取时滚动缓慢,android,caching,android-volley,Android,Caching,Android Volley,我已经用谷歌I\O截击实现了Gallery视图,并成功下载图像和进行缓存 首先,当我使用LruCache进行缓存时,它非常好,画廊滚动也很好。但是LruCache并没有维护16MB的内存,而是只缓存4MB的内存。我想要高达16MB的缓存 所以我改用DiscLruCache来代替LruCache。它正在按我的要求进行缓存(16MB)。但问题是在下载和完成所有缓存(16MB)后,库视图滚动速度非常慢,而且不平滑 这是我的密码 package com.technotalkative.volle

我已经用谷歌I\O截击实现了Gallery视图,并成功下载图像和进行缓存

首先,当我使用LruCache进行缓存时,它非常好,画廊滚动也很好。但是LruCache并没有维护16MB的内存,而是只缓存4MB的内存。我想要高达16MB的缓存

所以我改用DiscLruCache来代替LruCache。它正在按我的要求进行缓存(16MB)。但问题是在下载和完成所有缓存(16MB)后,库视图滚动速度非常慢,而且不平滑

这是我的密码

    package com.technotalkative.volleyimageloading;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.TextView;

import com.android.volley.toolbox.NetworkImageView;

public class SimpleViewFrag extends Fragment {

    public static final String TAG = SimpleViewFrag.class.getSimpleName();
    private Gallery mGallery;
    private List<MyCataLogData> simpleViewList = new ArrayList<MyCataLogData>();
    MainActivity mainActivity;
    private LayoutInflater inflater;
    private int height;
    private int width;
    private int mItemWidth;
    private int mItemHeight;
    private SimpleViewAdapter mAdapter;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mainActivity = (MainActivity) activity;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Display display = getActivity().getWindowManager().getDefaultDisplay();
        height = display.getHeight();
        width = display.getWidth();

        mItemWidth = (int) (width / 1.7f);
        mItemHeight = (int) (height / 3f);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        this.inflater = inflater;
        View v = null;
        v = inflater.inflate(R.layout.simple_view, container, false);


//      String s = getArguments().getString(UCConstants.CATALOG_CONTENT_KEY);
        mGallery = (Gallery) v.findViewById(R.id.simpleViewGalleruy);

        mAdapter = new SimpleViewAdapter();
        mGallery.setAdapter(mAdapter);

//      mGallery.setSelection(1);

        DisplayMetrics metrics = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);

        // set gallery to left side
        MarginLayoutParams mlp = (MarginLayoutParams) mGallery.getLayoutParams();
        mlp.setMargins(-((int) (metrics.widthPixels / 3.8f)), mlp.topMargin,
                    mlp.rightMargin, mlp.bottomMargin);

        parseJsonForCataLog();


        mGallery.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                Log.e(TAG, "position: ====="+position);

            }
        });

        return v;
    }

    public class SimpleViewAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return simpleViewList.size();
        }

        @Override
        public Object getItem(int position) {
            return simpleViewList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            NetworkImageView networkImageView = null;
            TextView tvTitle = null;
            TextView tvText = null;
            View childView = null;


            if (convertView == null) {
                childView = inflater.inflate(R.layout.simple_view_content_item, null);
            } else {
                childView = convertView;
            }

            if (childView != null) {

                networkImageView = (NetworkImageView) childView
                        .findViewById(R.id.networkImageView);

                networkImageView.getLayoutParams().width = mItemWidth;
                networkImageView.getLayoutParams().height = LayoutParams.MATCH_PARENT;

                //getting an object for gallery item
                MyCataLogData cld = simpleViewList.get(position);
                if (networkImageView != null) {
                         networkImageView
                            .setImageUrl(cld.getSimpleImageUrl(), ImageCacheManager.getInstance().getImageLoader());
                }
                tvTitle = (TextView) childView.findViewById(R.id.title);
                if (tvTitle != null) {
                    tvTitle.setText(cld.getSimpleTitle());
                }

                tvText = (TextView) childView.findViewById(R.id.text);
                if (tvText != null) {
                    tvText.setText(cld.getSimpleText());
                }

            }
            return childView;
        }
    }

    protected void parseJsonForCataLog() {
        try {

            String jsonObjectString = getArguments().getString("JSONObject");

            JSONObject rootResponce = new JSONObject(jsonObjectString);

            Log.e(TAG, "rootResponce: " + rootResponce);
            JSONArray simpleArray = rootResponce.optJSONArray("SIMPLE");

            if(simpleArray == null)
                return;

            for (int i = 0; i < simpleArray.length(); i++) {
                JSONObject childMenuObject = simpleArray.getJSONObject(i);

                String textSimple = childMenuObject.optString("text");
                String titleSimple = childMenuObject.optString("title");
                String imageUrlSimple = childMenuObject.optString("imageUrl");

                MyCataLogData mcld = new MyCataLogData(null ,textSimple, titleSimple, imageUrlSimple);
                simpleViewList.add(mcld);
//              Log.e(TAG, "" + childMenuObject);
            }

            mAdapter.notifyDataSetChanged();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package com.technotalkative.volleyimageloading;
导入java.util.ArrayList;
导入java.util.List;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.util.DisplayMetrics;
导入android.util.Log;
导入android.view.Display;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.ViewGroup.LayoutParams;
导入android.view.ViewGroup.MarginLayoutParams;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.BaseAdapter;
导入android.widget.Gallery;
导入android.widget.TextView;
导入com.android.volley.toolbox.NetworkImageView;
公共类SimpleViewFrag扩展了片段{
public static final String TAG=SimpleViewFrag.class.getSimpleName();
私人画廊;
私有列表SimpleView列表=新的ArrayList();
主要活动主要活动;
私人充气机;
私人内部高度;
私有整数宽度;
米特维兹私人酒店;
私人八人制;
私人SimpleWidapter mAdapter;
@凌驾
公共事务主任(活动){
超级转速计(活动);
mainActivity=(mainActivity)活动;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
显示显示=getActivity().getWindowManager().getDefaultDisplay();
高度=display.getHeight();
宽度=display.getWidth();
斜接宽度=(int)(宽度/1.7f);
斜接高度=(内部)(高度/3f);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
这个。充气机=充气机;
视图v=null;
v=充气机。充气(R.布局。简单视图,容器,假);
//字符串s=getArguments().getString(UCConstants.CATALOG\u CONTENT\u KEY);
mGallery=(画廊)v.findViewById(R.id.simpleViewGalleruy);
mAdapter=new SimpleViewAdapter();
mGallery.setAdapter(mAdapter);
//选举(1);
DisplayMetrics=新的DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(度量);
//将库设置为左侧
MarginLayoutParams mlp=(MarginLayoutParams)mGallery.getLayoutParams();
mlp.setMargins(((int)(metrics.widthPixels/3.8f)),mlp.topMargin,
mlp.rightMargin,mlp.bottomMargin);
parseJsonForCataLog();
mGallery.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共单击(适配器视图arg0,视图arg1,内部位置,
长arg3){
Log.e(标签,“位置:==”+位置);
}
});
返回v;
}
公共类SimpleViewer扩展了BaseAdapter{
@凌驾
public int getCount(){
返回simpleViewList.size();
}
@凌驾
公共对象getItem(int位置){
返回simpleViewList.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
NetworkImageView NetworkImageView=null;
TextView-tvTitle=null;
text视图tvText=null;
视图childView=null;
if(convertView==null){
childView=充气机。充气(R.layout.simple\u view\u content\u item,null);
}否则{
childView=convertView;
}
if(childView!=null){
networkImageView=(networkImageView)子视图
.findViewById(R.id.networkImageView);
networkImageView.getLayoutParams().width=mItemWidth;
networkImageView.getLayoutParams().height=LayoutParams.MATCH\u父项;
//获取库项目的对象
MyCataLogData cld=simpleViewList.get(位置);
如果(networkImageView!=null){
网络图像视图
.setImageUrl(cld.getSimpleImageUrl(),ImageCacheManager.getInstance().getImageLoader());
}
tvTitle=(TextView)childView.findViewById(R.id.title);
if(tvTitle!=null){
setText(cld.getSimpleTitle());
}
tvText=(TextView)childView.findViewById(R.id.text);
如果(tvText!=null){
setText(cld.getSimpleText());
}
}
返回儿童视图;
}
}
受保护的void parseJsonForCataLog(){
试一试{
String JSONObject String=getArguments().getString(“JSONObject”);
JSONObject rootResponse=新的JSONObject(JSONObject字符串);
Log.e(标签“rootresponse:+rootresponse”);
JSONArray simpleArray=rootresponse.optJSONArray(“简单”);
if(simpleArray==null)
返回;
对于(int i=0;i    ListView mListView;
    mListView.setOnScrollListener(this);

@Override
public void onScrollStateChanged( AbsListView view, int scrollState ) {
    // Pause disk cache access to ensure smoother scrolling
    if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
        VolleyHelper.getImageLoader().getRequestQueue().stop();
    } else {
        VolleyHelper.getImageLoader().getRequestQueue().start();
    }
}

@Override
public void onScroll( AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount ) {

}