当前位置: 移动技术网 > IT编程>移动开发>Android > Android侧边栏滑动切换的view效果

Android侧边栏滑动切换的view效果

2019年07月24日  | 移动技术网IT编程  | 我要评论

连州天气预报,电子杂志免费下载,mvp情人演员表

废话不多说了,直接给大家贴代码了,具体代码如下所示:

import android.content.context;
import android.graphics.canvas;
import android.graphics.paint;
import android.graphics.drawable.bitmapdrawable;
import android.util.attributeset;
import android.view.motionevent;
import android.view.view;
public class sidebar extends view {
  private static final int margin_bottom = 2;
  private int mitemheight = 18;
  private onlettertouchlistener monlettertouchlistener;
  private paint mpaint;
  private float mwidthcenter;
  private int backgroundcolor = 0x00f0f0f0;
  private char[] chars = appcommon.indexer_chars;
  public interface onlettertouchlistener {
    public abstract void onpresseddown(int index, char ch);
    public abstract void onpressedup(int index, char ch);
  }
  public sidebar(context context) {
    this(context, null);
  }
  public sidebar(context context, attributeset attrs) {
    this(context, attrs, -1);
  }
  public sidebar(context context, attributeset attrs, int defstyle) {
    super(context, attrs, defstyle);
    init();
  }
  private int starty = 0;//其实位置的y轴坐标
  public sidebar setchars(char[] chars) {
    this.chars = chars;
//   for(int i = 0 ; i < (26 - chars.length) / 2 ; i++){
//     starty += i * mitemheight;
//   }
    init();
    postinvalidate();
    return this;
  }
  private void init() {
    mpaint = new paint();
    mpaint.setcolor(0xffcfcfd0);
    mpaint.setantialias(true);
    mpaint.setfakeboldtext(true);
    mpaint.settextsize(32);
    mpaint.setcolor(getresources().getcolor(r.color.blue));
    mpaint.setsubpixeltext(true);
    mpaint.settextalign(paint.align.center);
    setbackgroundcolor(backgroundcolor);
  }
  public boolean ontouchevent(motionevent event) {
    super.ontouchevent(event);
    int idx = (int) event.gety() / mitemheight;
    if (idx >= chars.length) {
      idx = chars.length - 1;
    } else if (idx < 0) {
      idx = 0;
    }
    if (event.getaction() == motionevent.action_down || event.getaction() == motionevent.action_move) {
      setbackgroundresource(r.color.sidebar_select_background);
      if (monlettertouchlistener != null) {
        monlettertouchlistener.onpresseddown(idx, chars[idx]);
      }
    } else if (event.getaction() == motionevent.action_up) {
      setbackgrounddrawable(new bitmapdrawable());
      setbackgroundcolor(backgroundcolor);
      if (monlettertouchlistener != null) {
        monlettertouchlistener.onpressedup(idx, chars[idx]);
      }
    }
    return true;
  }
  @override
  protected void onsizechanged(int w, int h, int oldw, int oldh) {
    mitemheight = (h - margin_bottom) / 26;
    mwidthcenter = getmeasuredwidth() / 2;
    super.onsizechanged(w, h, oldw, oldh);
  }
  protected void ondraw(canvas canvas) {
    for (int i = 0; i < chars.length; i++) {
      canvas.drawtext(string.valueof(chars[i]), mwidthcenter,starty + mitemheight + (i * mitemheight), mpaint);
    }
    super.ondraw(canvas);
  }
  public void setonlettertouchlistener(onlettertouchlistener listener) {
    monlettertouchlistener = listener;
  }
}

以上所述是小编给大家介绍的android侧边栏滑动切换的view效果,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网