2015-07-12 126 views
0

我想在Android中設計navigation drawer like this one。所以,我試着跟着。帶動畫行的導航抽屜

我有我的導航抽屜包含ImageView和TextView行的ListView。現在,我想爲導航抽屜中的文本添加動畫。所以,我想在我的適配器使用Handler

DrawerModel.java

public class DrawerModel { 

    private int icon; 
    private String title; 

    public DrawerModel(){ 
     icon = R.drawable.ic_settings_white_24dp; 
     title = ""; 
    } 

    public int getIcon() { 
     return icon; 
    } 

    public void setIcon(int icon) { 
     this.icon = icon; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

DrawerAdapter.java

public class DrawerAdapter extends BaseAdapter{ 
    private Context mContext; 
    private List<DrawerModel> mListDrawerModels; 
    private static Handler mHandler; 

    public DrawerAdapter(Context context,List<DrawerModel> listDrawerModels){ 
     mContext = context; 
     mListDrawerModels = listDrawerModels; 
     mHandler = new Handler(); 
    } 

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

    @Override 
    public DrawerModel getItem(int position) { 
     return mListDrawerModels.get(position); 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row; 
     ViewHolder holder; 

     if(convertView==null){ 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.row_listview_drawer, parent, false); 

      holder = new ViewHolder(mContext,row); 
      row.setTag(holder); 
     } 
     else{ 
      row = convertView; 
      holder = (ViewHolder) row.getTag(); 
     } 

     if(mListDrawerModels !=null && !mListDrawerModels.isEmpty()) { 
      DrawerModel model = mListDrawerModels.get(position); 
      if (model != null) { 
       holder.ivDrawerRow.setImageResource(model.getIcon()); 
       DrawerAdapter.setTextAsync(position, holder, model); 
      } 
     } 
     return row; 
    } 

    private static void setTextAsync(int position, final ViewHolder holder, final DrawerModel model) { 
     mHandler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       holder.tvDrawerRow.setText(model.getTitle()); 
      } 
     },position*1000); 
    } 

    private static class ViewHolder{ 
     private ImageView ivDrawerRow; 
     private TextView tvDrawerRow; 

     public ViewHolder(Context context,View row){ 
      this.ivDrawerRow = (ImageView) row.findViewById(R.id.iv_row_drawer); 
      this.tvDrawerRow = (TextView) row.findViewById(R.id.tv_row_drawer); 
      this.tvDrawerRow.setTypeface(FontCache.getInstance(context).getTypeFace()); 
     } 
    } 
} 

在這裏,在我的適配器,在setTextAsync方法;我試圖乘以延遲的位置,這工作正常,但文本不動畫。他們在幾秒鐘後才逐一出現。此外,這隻適用於第一次。

我該怎麼辦?任何人都可以引導我?

回答