我有一個具有5-10個項目的導航抽屜。我已經爲這些項目添加了動畫,以便它們從左向右滑動。問題是這種情況只發生在我第一次打開抽屜時,其餘時間沒有動畫。作爲補救措施,我在onDrawerOpened(View drawerView)方法內部的適配器上添加了notifyDataSetChanged。現在這些項目每次都是動畫效果,但效果就像導航抽屜項目只能動畫一次
- 所有項目都沒有動畫輸入。
- 然後所有項目都在我面前重新創建。
- 然後他們動畫。 希望大家都有想法。
所以我想要的是=>導航抽屜裏的物品每次打開抽屜時都必須從左到右做動畫,滑動並點擊導航切換。
我的一些代碼片段給知道我做了 內部適配器,其膨脹的觀點:
@Override
public View getView(int position, LayoutInflater inflator, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflator.inflate(R.layout.base_drawer_nav_item, parent, false);
ImageView nav_item_icon = (ImageView) convertView.findViewById(R.id.nav_item_icon);
TextView nav_item_title = (TextView) convertView.findViewById(R.id.nav_item_title);
nav_item_icon.setImageResource(this.icon);
nav_item_title.setText(this.title);
}
if(convertView != null)
setAnimation(convertView, position);
return convertView;
}
private void setAnimation(View viewToAnimate, int position) {
if(mContext != null) {
Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.slide_in_left);
animation.setDuration(position * 50 + 200);
viewToAnimate.startAnimation(animation);
}
}
內活動其中的onCreate抽屜式導航是 - ()方法(請注意,我有加notifyDataSetChanged僅作爲確保如我所料不工作的補救措施)
//some code above and below this
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
adapter.notifyDataSetChanged();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
invalidateOptionsMenu();
}
};
又一想,我是,我應該把所有的視圖在一個ArrayList,然後再製作動畫每次navigationDrawer打開(使用循環+動畫on.start())雖然我沒有實現這個。
您能否告訴我我應該遵循的正確方法,可能在一些代碼的幫助下 – kishorepatel
我編輯我的答案與例 – Gudin
如果它的工作,請標記爲答案。如果你需要更多的幫助,你可以在這裏問。 – Gudin