联系人索引字母条

来源:互联网 发布:linux lost found 编辑:程序博客网 时间:2024/05/21 17:21

代码使用片段:

public class MainActivity extends Activity implements OnTouchingLetterChangedListener {    private LongitudinalSideBarView mLongitudinalSideBarView = null;    private TransverseSideBarView mTransverseSideBarView = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView dialog = (TextView) findViewById(R.id.layout_pb_dialog);        mLongitudinalSideBarView = (LongitudinalSideBarView) findViewById(R.id.sidebar);        mLongitudinalSideBarView.setTextView(dialog);        mLongitudinalSideBarView.setOnTouchingLetterChangedListener(this);        TextView trans_dialog = (TextView) findViewById(R.id.trans_layout_pb_dialog);        mTransverseSideBarView = (TransverseSideBarView) findViewById(R.id.trans_sidebar);        mTransverseSideBarView.setTextView(trans_dialog);//      mTransverseSideBarView.setOnTouchingLetterChangedListener(this);    }    @Override    public void onTouchingLetterChanged(String s) {        // 根据触摸到的s选中Listview的项    }}

纵向视图:

public class LongitudinalSideBarView extends View {    private OnTouchingLetterChangedListener onTouchingLetterChangedListener;    public static String[] b = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",            "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#" };    private int choose = -1;//    private Paint paint = new Paint();    private TextView mTextDialog;    public void setTextView(TextView mTextDialog) {        this.mTextDialog = mTextDialog;    }    public LongitudinalSideBarView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public LongitudinalSideBarView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public LongitudinalSideBarView(Context context) {        super(context);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        int height = getHeight();//        int width = getWidth(); //        float singleHeight = (height * 1f) / b.length;//        singleHeight = (height * 1f - singleHeight / 2) / b.length;        for (int i = 0; i < b.length; i++) {            paint.setColor(Color.rgb(23, 122, 216));            // paint.setColor(Color.WHITE);            paint.setTypeface(Typeface.DEFAULT_BOLD);            paint.setAntiAlias(true);            paint.setTextSize(16);            //            if (i == choose) {                paint.setColor(Color.parseColor("#c60000"));                paint.setFakeBoldText(true);            }            //            float xPos = width / 2 - paint.measureText(b[i]) / 2;            float yPos = singleHeight * i + singleHeight;            canvas.drawText(b[i], xPos, yPos, paint);            paint.reset();//        }    }    @Override    public boolean dispatchTouchEvent(MotionEvent event) {        final int action = event.getAction();        final float y = event.getY();//        final int oldChoose = choose;        final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;        final int c = (int) (y / getHeight() * b.length);//        switch (action) {        case MotionEvent.ACTION_UP:            //setBackgroundResource(R.drawable.side_bg);            choose = -1;//            invalidate();            if (mTextDialog != null) {                mTextDialog.setVisibility(View.INVISIBLE);            }            break;        default:            //setBackgroundResource(R.drawable.side_bg);            if (oldChoose != c) {                if (c >= 0 && c < b.length) {                    if (listener != null) {                        listener.onTouchingLetterChanged(b[c]);                    }                    if (mTextDialog != null) {                        mTextDialog.setText(b[c]);                        mTextDialog.setVisibility(View.VISIBLE);                    }                    choose = c;                    invalidate();                }            }            break;        }        return true;    }    /**     *      *      * @param onTouchingLetterChangedListener     */    public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener onTouchingLetterChangedListener) {        this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;    }    /**     *      *      * @author coder     *      */    public interface OnTouchingLetterChangedListener {        public void onTouchingLetterChanged(String s);    }}

横向视图:

public class TransverseSideBarView extends View {    private OnTouchingLetterChangedListener onTouchingLetterChangedListener;    public static String[] b = { "#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",            "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };    private int choose = -1;//    private Paint paint = new Paint();    private TextView mTextDialog;    public void setTextView(TextView mTextDialog) {        this.mTextDialog = mTextDialog;    }    public TransverseSideBarView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);    }    public TransverseSideBarView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public TransverseSideBarView(Context context) {        super(context);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        int height = getHeight();        int width = getWidth();        float singleWidth = (width * 1f) / b.length;        for (int i = 0; i < b.length; i++) {            paint.setColor(Color.WHITE);            paint.setTypeface(Typeface.DEFAULT_BOLD);            paint.setAntiAlias(true);            paint.setTextSize(32);            if (i == choose) {                paint.setColor(Color.parseColor("#FFEEE000"));                paint.setFakeBoldText(true);            }            float xPos = singleWidth * i;            float yPos = height / 2 + 16;// 加字体大小一半高度            canvas.drawText(b[i], xPos, yPos, paint);            paint.reset();        }    }    @Override    public boolean dispatchTouchEvent(MotionEvent event) {        final int action = event.getAction();        final float x = event.getX();//        final int oldChoose = choose;        final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;        final int c = (int) (x / getWidth() * b.length);//        switch (action) {        case MotionEvent.ACTION_UP:            // setBackgroundResource(R.drawable.side_bg);            choose = -1;//            invalidate();            if (mTextDialog != null) {                mTextDialog.setVisibility(View.INVISIBLE);            }            break;        default:            // setBackgroundResource(R.drawable.side_bg);            if (oldChoose != c) {                if (c >= 0 && c < b.length) {                    if (listener != null) {                        listener.onTouchingLetterChanged(b[c]);                    }                    if (mTextDialog != null) {                        mTextDialog.setText(b[c]);                        mTextDialog.setVisibility(View.VISIBLE);                    }                    choose = c;                    invalidate();                }            }            break;        }        return true;    }    public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener onTouchingLetterChangedListener) {        this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;    }    public interface OnTouchingLetterChangedListener {        public void onTouchingLetterChanged(String s);    }}

XML应用:

  <com.asir.sidebarview.LongitudinalSideBarView        android:id="@+id/sidebar"        android:layout_width="33.0dip"        android:layout_height="match_parent"        android:layout_alignParentRight="true"        android:background="@drawable/side_bg"        android:visibility="visible" />    <TextView        android:id="@+id/layout_pb_dialog"        android:layout_width="80.0px"        android:layout_height="80.0px"        android:layout_centerInParent="true"        android:background="@drawable/show_head_toast_bg"        android:gravity="center"        android:textColor="#ffffffff"        android:textSize="30.0dip"        android:visibility="gone" />    <com.asir.sidebarview.TransverseSideBarView        android:id="@+id/trans_sidebar"        android:layout_width="match_parent"        android:layout_height="66dp"        android:layout_alignParentBottom="true"        android:layout_marginLeft="37.0px"        android:layout_marginRight="37.0px"        android:background="@drawable/trans_side_bg"        android:visibility="visible" />    <TextView        android:id="@+id/trans_layout_pb_dialog"        android:layout_width="80.0px"        android:layout_height="80.0px"        android:layout_centerInParent="true"        android:background="@drawable/spd_bt_word_bg"        android:gravity="center"        android:textColor="#ffffffff"        android:textSize="30.0dip"        android:visibility="gone" />

这里写图片描述

这里写图片描述

源码点击下载

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 交易猫买的号被找回了怎么办 uc上我的小说看不了怎么办 微信零钱忘记密码没有银行卡怎么办 九游平台冻结提不了现怎么办 计算机考试报名登录名忘记了怎么办 云顶扑克提现怎么提不出来怎么办 微信正在下载一直0kb怎么办 守望先锋运行时出现意外错误怎么办 信用卡暂停使用怎么办还能恢复吗 新刷乳胶漆墙面一碰一个坑怎么办 夏天开空调冻着了头疼打喷嚏怎么办 桑蚕丝衣服被沐浴露退了色怎么办 空间被别人知道了密码登录了怎么办 三星手机显示解析包出现问题怎么办 三星手机下载解析包出现问题怎么办 两万的流动大棚给整坏了怎么办 劲舞团抽奖领了一样的衣服怎么办 win系统ps界面字体太小怎么办 任何网页都变成监控登录界面怎么办 微信启动录音的尝试被拒绝怎么办 微信传到电脑的文件打不开怎么办 转转网账号出租时遇到防沉迷怎么办 如果买了王者号结果有防沉迷怎么办 苹果手机一直显示验证失败怎么办呢 安装包证书异常导致安装失败怎么办 qq飞车忘了几区的怎么办 5e在游戏里卡住不动怎么办 别人发的cdr文件打开太慢怎么办 qq红包充值话费未到账怎么办 qq飞车充值至尊皇冠不到账怎么办 微信支付金额超过单日限制怎么办 不小心在qq钱包中充错话费怎么办 衣服质量不好穿了几次就坏了怎么办 手机丢了找到手机店的人怎么办 在手机店买手机买贵了怎么办 王者荣耀好多没对的东西怎么办 用电脑玩游戏键盘不管用怎么办? 王者荣耀跨系统送皮肤领不到怎么办 电脑使用迅雷时提示缓存过高怎么办 扣扣安全中心动态密码忘记了怎么办 pu管两头固定了中间换截怎么办