Android 我有G3用户抱怨我的导航抽屉无法使用
无法使用,因为它非常滞后,几乎无法到达所有的项目,因为它是多么缓慢。我真的不知道我在实现导航抽屉时犯了什么错误。我正在使用AppCompatV7的材质主题,并使用viewholder模式。抽屉中只包含600x232的图像,每个图像大小约为35kb,存储在应用程序的本地 这是我主要活动的一个样本Android 我有G3用户抱怨我的导航抽屉无法使用,android,navigation-drawer,android-appcompat,drawerlayout,Android,Navigation Drawer,Android Appcompat,Drawerlayout,无法使用,因为它非常滞后,几乎无法到达所有的项目,因为它是多么缓慢。我真的不知道我在实现导航抽屉时犯了什么错误。我正在使用AppCompatV7的材质主题,并使用viewholder模式。抽屉中只包含600x232的图像,每个图像大小约为35kb,存储在应用程序的本地 这是我主要活动的一个样本 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
. . .
mColorIcons = getResources().getStringArray(R.array.color_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
adapter = new MyPerformanceArrayAdapter(this, mColorIcons);
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
mDrawerList.setCacheColorHint(Color.TRANSPARENT); // not sure if this is required for you.
mDrawerList.setFastScrollEnabled(true);
mDrawerList.setScrollingCacheEnabled(false);
. . .
下面是MyPerformanceArrayaAdaptor的外观
public class MyPerformanceArrayAdapter extends ArrayAdapter<String>{
private final Activity context;
private final String[] names;
static class ViewHolder {
public ImageView image;
}
public MyPerformanceArrayAdapter(Activity context, String[] names) {
super(context, R.layout.drawer_list_item, names);
this.context = context;
this.names = names;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// reuse views
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.drawer_list_item, null);
// configure view holder
ViewHolder viewHolder = new ViewHolder();
viewHolder.image = (ImageView) rowView
.findViewById(R.id.image);
rowView.setTag(viewHolder);
}
// fill data
ViewHolder holder = (ViewHolder) rowView.getTag();
String s = names[position];
holder.image.setImageResource(context.getResources().getIdentifier(s, "drawable", context.getPackageName()));
return rowView;
}
}
如果您能就如何改进这一点提供意见,我将不胜感激。在2013款Moto X 4.4.4、Nexus 5 L和Nexus 7 L2013上进行测试时,我没有遇到任何问题。我想不出具体与LG G3有关的问题是什么。有一些报道称,它在HTC M8上的表现也不好
编辑:这是我的抽屉列表项目xml代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"/>
</LinearLayout>
我只能建议逐个禁用上述代码中的内容,并将测试版本发送给一个更有用的用户进行尝试。我能够通过在后台线程上加载图像来解决此问题。不可用意味着什么?表现不佳意味着什么?您是否使用过Apkudo之类的服务来查看您的应用程序在各种设备上的外观?由于速度太慢,无法使用,并且几乎无法访问所有项目。我猜发送的更改将设置为“CrollingCacheAbled”为真。可能是屏幕正在调整图像的大小,使其更大,并将其全部保存在内存中。