我有一个带有Button的ListView,它可以激活列表项中的其他视图。虽然我正在使用持有者模式,但每当重新使用视图时,重置这些动画列表项的位置确实需要花费太多时间。 有没有人知道如何在不放弃动画的情况下提高性能?它不像列表不可用,但滚动时总会有一点口吃,每当新的列表项出现时屏幕。这是(缩写)getView()代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final SuggestionViewHolder holder;
final Suggestion suggestion = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_suggestion, parent, false);
holder = new SuggestionViewHolder();
holder.content = = (ViewGroup) convertView.findViewById(R.id.content);
holder.openExternalLinksButton = (ImageButton) convertView.findViewById(R.id.btn_open_external_links);
holder.externalLinks = (ViewGroup) convertView.findViewById(R.id.external_links);
holder.closeExternalLinksButton = (ImageView) convertView.findViewById(R.id.btn_close_external_links);
convertView.setTag(holder);
} else {
holder = (SuggestionViewHolder) convertView.getTag();
// reset values for re-use of holder
holder.content.setScaleX(1);
holder.content.setScaleY(1);
holder.content.setAlpha(1);
holder.content.setBlocked(false);
holder.externalLinks.setTranslationY(0);
}
// animate external links to show them
holder.openExternalLinksButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View anchor) {
holder.content.animate().scaleX(0.9f).scaleY(0.9f).alpha(0.3f).start();
holder.externalLinks.animate().setDuration(220).translationYBy(mExternalLinkWrapperTranslationY);
}
});
// animate external links to hide them
holder.closeExternalLinksButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.content.animate().setDuration(220).scaleX(1f).scaleY(1f).alpha(1f).start();
holder.externalLinks.animate().setDuration(220).translationY(0);
}
});
return convertView;
}
重复使用持有者" -part的重置值需要花费很多时间。
谢谢!
答案 0 :(得分:0)
我遇到了同样的问题...
我发现这篇文章可以帮助我提高alpha功能https://plus.google.com/+RomanNurik/posts/NSgQvbfXGQN
的性能刚刚放
View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
动画前的