手机通讯录博文1

题目描述

这是一个手机通讯录管理软件。

要求:

  1. 分组管理。能够添加、删除、修改。

  2. 用户管理。包括姓名、手机、办公电话等。

  3. 用户查询。初始时按照字母顺序显示所有人员,可以输入姓名或者数字模糊查询

  4. 功能模拟。当选中一个用户时,有通话和短信选项可以操作,选择后进入相应界面双卡手机进入所想选用卡选项

  1. 功能分析

系统主要功能包括:

  1. 分组管理。可以添加、修改、删除分组。

  2. 用户管理。可添加、显示、修改、删除用户信息。用户信息包括姓名、手机、办公电话、电子

  3. 用户查询。初始时按照字母顺序显示所有人员,可输入姓名或数字进行模糊查询。可按分组显示人员。

  4. 功能模拟。当选中用户时,有通话和短信选项可以操作,选择后进入相应界面。

  1. 系统设计

3.1 系统整体结构

3.1.1 系统中的信息类型划分

在本系统中,主要分为两类信息:分组信息和人员信息(如图1所所示)。其中分组信息分组名称。人员信息包括人员姓名、手机、办公电话、电子邮箱

3.1.2 对分组的操作

    用户可以添加分组,删除分组,重命名分组。

3.1.3 对人员的操作

用户可以添加人员,删除人员,修改人员,功能模拟。

 

 

3.2 主要模块设计代码

 

1效果图



 public class MyLetterListView extends View {  
      
    OnTouchingLetterChangedListener onTouchingLetterChangedListener;  
    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"};  
    int choose = -1;  
    Paint paint = new Paint();  
    boolean showBkg = false;  
  
    public MyLetterListView(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);  
    }  
  
    public MyLetterListView(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    public MyLetterListView(Context context) {  
        super(context);  
    }  
      
    @Override  
    protected void onDraw(Canvas canvas) {  
        super.onDraw(canvas);  
        if(showBkg){  
            canvas.drawColor(Color.parseColor("#40000000"));  
        }  
          
        int height = getHeight();  
        int width = getWidth();  
        int singleHeight = height / b.length;  
        for(int i=0;i<b.length;i++){  
           paint.setColor(Color.WHITE);  
           paint.setTypeface(Typeface.DEFAULT_BOLD);  
           paint.setAntiAlias(true);  
           if(i == choose){  
               paint.setColor(Color.parseColor("#3399ff"));  
               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_DOWN:  
                showBkg = true;                  if(oldChoose != c && listener != null){  
                     

      if(c>0&&c<b.length){  listener.onTouchingLetterChanged(b[c]);  
                        choose = c;  .                   }  
               }  
                 
                break;              case MotionEvent.ACTION_MOVE:  
                if(oldChoose != c && listener != null){  
                    if(c > 0 && c< b.length){  
                        listener.onTouchingLetterChanged(b[c]);  
                        choose = c;  
                       invalidate();  
                   }  
               }  
               break;  
            case MotionEvent.ACTION_UP:  
                showBkg = false;  
                choose = -1;  
                invalidate();  
                break;  
        }  
        return true;  
    }  
  
    @Override  
    public boolean onTouchEvent(MotionEvent event) {  
        return super.onTouchEvent(event);  
   }  
 
    public void setOnTouchingLetterChangedListener(  
            OnTouchingLetterChangedListener onTouchingLetterChangedListener) {  
        this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;  
    }  
  
       public interface OnTouchingLetterChangedListener{  
        public void onTouchingLetterChanged(String s);  
    }  
      
}  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值