Android 开发艺术探索笔记(十七) 之 性能优化

2018-05-01  本文已影响11人  innovatorCL

一、优化列表的卡顿现象

举个栗子:

@Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
            //通过此变量决定是否此刻添加异步加载图片任务
            mIsGridViewIdle = true;
            mImageAdapter.notifyDataSetChanged();
        } else {
            mIsGridViewIdle = false;
        }
    }

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

    }
@Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.image_list_item, parent, false);
                holder = new ViewHolder();
                holder.imageView = convertView.findViewById(R.id.image);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
            ImageView imageView = holder.imageView;
            final String tag = (String) imageView.getTag();
            final String uri = getItem(position);
            if (!uri.equals(tag)) {
                imageView.setImageDrawable(mDefaultBitmapDrawable);
            }
            if (mIsGridViewIdle && mCanGetBitmapFromNetWork) {
                imageView.setTag(uri);

                //异步加载图片
                mImageLoader.bindBitmap(uri, imageView, mImageWidth, mImageWidth);
            }
            return convertView;
        }
设置 android:hardwareAccelerated = "true"

这样就能让 Activity 开启硬件加速了。

二、布局优化

布局优化的思路就是:尽量减少布局文件的层级。

三、绘制优化

绘制优化是指 View 的 onDraw() 要避免执行大量的操作。

四、内存优化

上一篇 下一篇

猜你喜欢

热点阅读