Android仿网易客户端顶部导航栏效果

2019-12-10 17:54:44王振洲

下面是textview的onTouchEvent事件的代码:

@Override 
  public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      if (up_text != null) { 
        up_text.setTextColor(Color.BLACK); 
      } else { 
        TextView text = (TextView) context 
            .findViewById(R.id.head_lines); 
        text.setTextColor(Color.BLACK); 
      } 
      translateImage(event); 
      TextView tv = (TextView) v; 
      tv.setTextColor(Color.WHITE); 
      up_text = tv; 
    } 
    return true; 
  } 

 在这段代码中我主要是实现了textview的字体颜色的变还,大家应该看得懂,没什么好说的吧。

最后就是实现HorizontalScrollView控件通过单机左右的imageButton来实现左右移动,这个就是在ImageButton的OnClick事件中来调用HorizontalScrollView的smoothScrollTo(x,y)方法这里面是传入新的坐标。下面是实现代码:

private void addListener() { 
  column_to_left.setOnClickListener(new OnClickListener() { 
 
    @Override 
    public void onClick(View v) { 
      column_scrollview.smoothScrollTo( 
          column_scrollview.getScrollX() - 40, 0); 
    } 
  }); 
  column_to_right.setOnClickListener(new View.OnClickListener() { 
 
    @Override 
    public void onClick(View v) { 
      column_scrollview.smoothScrollTo( 
          column_scrollview.getScrollX() + 40, 0); 
    } 
  }); 
} 

下面是动态添加textview的代码:

private void initView() { 
  column_title_layout = (LinearLayout) findViewById(R.id.column_title_layout); 
  column_scrollview = (HorizontalScrollView) findViewById(R.id.column_scrollview); 
  column_slide_bar = (ImageView) findViewById(R.id.column_slide_bar); 
  column_to_left = (ImageButton) findViewById(R.id.column_to_left); 
  column_to_right = (ImageButton) findViewById(R.id.column_to_right); 
 
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(65, 
      LayoutParams.WRAP_CONTENT); 
  params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; 
  params.leftMargin = 9; 
 
  TextViewOnTouchListener listener = new TextViewOnTouchListener( 
      column_slide_bar, this); 
  TextView text = null; 
  for (int i = 0; i < 6; i++) { 
    text = new TextView(this); 
    text.setTextSize(16); 
    switch (i) { 
    case 0: 
      text.setId(R.id.head_lines); 
      text.setTextColor(Color.WHITE); 
      text.setText("头条"); 
      break; 
    case 1: 
      text.setId(R.id.sport); 
      text.setTextColor(Color.BLACK); 
      text.setText("体育"); 
      break; 
    case 2: 
      text.setId(R.id.entertainment); 
      text.setTextColor(Color.BLACK); 
      text.setText("娱乐"); 
      break; 
    case 3: 
      text.setId(R.id.finance); 
      text.setTextColor(Color.BLACK); 
      text.setText("财经"); 
      break; 
    case 4: 
      text.setId(R.id.technology); 
      text.setTextColor(Color.BLACK); 
      text.setText("科技"); 
      break; 
    case 5: 
      text.setId(R.id.more); 
      text.setTextColor(Color.BLACK); 
      text.setText("更多"); 
      break; 
    } 
    text.setOnTouchListener(listener); 
    column_title_layout.addView(text, params); 
  } 
}