zoukankan      html  css  js  c++  java
  • android通讯录导航栏源码(一)

    通讯录导航栏源码:

    1.activity

      1 package com.anna.contact.activity;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 
      7 import com.anna.contact.R;
      8 import com.anna.contact.adapter.MyFriendsAdapter;
      9 import com.anna.contact.entity.Friend;
     10 import com.anna.contact.view.LetterlistViewForFriend;
     11 import com.anna.contact.view.LetterlistViewForFriend.OnTouchingLetterChangedListener;
     12 import com.iflytek.voiceads.AdError;
     13 import com.iflytek.voiceads.AdKeys;
     14 import com.iflytek.voiceads.IFLYAdListener;
     15 import com.iflytek.voiceads.IFLYAdSize;
     16 import com.iflytek.voiceads.IFLYFullScreenAd;
     17 
     18 import android.app.Activity;
     19 import android.content.Context;
     20 import android.graphics.PixelFormat;
     21 import android.os.Bundle;
     22 import android.os.Handler;
     23 import android.view.LayoutInflater;
     24 import android.view.View;
     25 import android.view.Window;
     26 import android.view.WindowManager;
     27 import android.view.ViewGroup.LayoutParams;
     28 import android.widget.AdapterView;
     29 import android.widget.AdapterView.OnItemClickListener;
     30 import android.widget.ListView;
     31 import android.widget.TextView;
     32 import android.widget.Toast;
     33 
     34 public class MyFriendsActivity extends Activity {
     35     private IFLYFullScreenAd ad;
     36     
     37     ListView lv_friend;
     38     String[] strings;// 存放存在的汉语拼音首字母
     39     List<Friend> friends;
     40     //右边字母导航
     41     LetterlistViewForFriend letterlistViewForFriend;
     42     HashMap<String, Integer> alphaIndex;// 存放存在的汉语拼音首字母和与之对应的列表位置
     43     TextView overlay;
     44     Handler handler;
     45     OverlayThread overlayThread; // 隐藏字母提示框
     46 
     47     @Override
     48     protected void onCreate(Bundle savedInstanceState) {
     49         // TODO Auto-generated method stub
     50         super.onCreate(savedInstanceState);
     51         requestWindowFeature(Window.FEATURE_NO_TITLE);
     52         createAd();
     53         setContentView(R.layout.vip_myactivity_myfriend);
     54         overlayThread = new OverlayThread();
     55         handler = new Handler();
     56         /* 初始化右边导航 */
     57         initOverlay();
     58         /* 初始化通讯录 */
     59         initData();
     60         lv_friend = (ListView) this.findViewById(R.id.vip_myfriend_lv_1);
     61         
     62         lv_friend.setAdapter(new MyFriendsAdapter(MyFriendsActivity.this,
     63                 friends));
     64         lv_friend.setOnItemClickListener(new OnItemClickListener() {
     65 
     66             @Override
     67             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     68                     long arg3) {
     69                 // TODO Auto-generated method stub
     70 
     71             }
     72 
     73         });
     74         
     75         letterlistViewForFriend=(LetterlistViewForFriend)this.findViewById(R.id.LetterlistViewForFriend);
     76         letterlistViewForFriend.setOnTouchingLetterChangedListener(new OnTouchingLetterChangedListener() {
     77             
     78             @Override
     79             public void onTouchingLetterChanged(String s) {
     80                 // TODO Auto-generated method stub
     81                 System.out.println(s);
     82                 int position = alphaIndex.get(s);
     83                 if (alphaIndex.get(s) != null) {
     84                     lv_friend.setSelection(position);
     85                 }
     86                 overlay.setText(s);
     87                 overlay.setVisibility(View.VISIBLE);
     88                 handler.removeCallbacks(overlayThread);
     89                 // 延迟一秒后执行,让overlay为不可见
     90                 handler.postDelayed(overlayThread, 1500);
     91             }
     92         });
     93    
     94     }
     95     // 初始化汉语拼音首字母弹出提示框
     96     private void initOverlay() {
     97         LayoutInflater inflater = LayoutInflater.from(this);
     98         overlay = (TextView) inflater.inflate(R.layout.overlay_layout, null);
     99         overlay.setVisibility(View.INVISIBLE);
    100         WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
    101                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
    102                 WindowManager.LayoutParams.TYPE_APPLICATION,
    103                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    104                         | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
    105                 PixelFormat.TRANSLUCENT);
    106         WindowManager windowManager = (WindowManager) this
    107                 .getSystemService(Context.WINDOW_SERVICE);
    108         windowManager.addView(overlay, lp);
    109     }
    110 
    111     public class OverlayThread implements Runnable {
    112 
    113         @Override
    114         public void run() {
    115             // TODO Auto-generated method stub
    116             overlay.setVisibility(View.INVISIBLE);
    117         }
    118 
    119     }
    120 
    121     private void initData() {
    122         List<String> list_data = new ArrayList<String>();
    123         list_data.add("Alex");
    124         list_data.add("Anna");
    125         list_data.add("Blic");
    126         list_data.add("Blpha");
    127         list_data.add("Clex");
    128         list_data.add("Clic");
    129         list_data.add("Clpha");
    130         list_data.add("Clex");
    131         list_data.add("Dlic");
    132         list_data.add("Dlpha");
    133         list_data.add("Dace");
    134         list_data.add("Dlpha");
    135         list_data.add("Elic");
    136         list_data.add("Elpha");
    137         list_data.add("Eace");
    138         list_data.add("Elpha");
    139         list_data.add("Elea");
    140         list_data.add("Flpha");
    141         list_data.add("Flea");
    142         list_data.add("Glpha");
    143         list_data.add("Gace");
    144         list_data.add("Glpha");
    145         list_data.add("Hlea");
    146         list_data.add("Ilpha");
    147         list_data.add("Jace");
    148         list_data.add("Jlpha");
    149         list_data.add("Jenney");
    150         list_data.add("Kitty");
    151         list_data.add("Klpha");
    152         list_data.add("Kath");
    153         list_data.add("Lace");
    154         list_data.add("Llpha");
    155         list_data.add("Moon");
    156         list_data.add("Merry");
    157         list_data.add("Nice");
    158         list_data.add("Object");
    159         list_data.add("Purplegrape");
    160         list_data.add("Queen");
    161         list_data.add("Qearl");
    162         list_data.add("Rose");
    163         list_data.add("Rain");
    164         list_data.add("Sunny");
    165         list_data.add("Sweet");
    166         list_data.add("Tiger");
    167         list_data.add("Ternence");
    168         list_data.add("Uea");
    169         list_data.add("Uea");
    170         list_data.add("Wendy");
    171         list_data.add("Winnie");
    172         list_data.add("Vivian");
    173         list_data.add("Vicky");
    174         list_data.add("Vanessa");
    175         list_data.add("Yvette");
    176         list_data.add("Yolanda");
    177         list_data.add("Yvonne");
    178         list_data.add("Zoey");
    179 
    180         friends = new ArrayList<Friend>();
    181         alphaIndex = new HashMap<String, Integer>();
    182 
    183         for (int i = 0; i < list_data.size(); i++) {
    184             Friend friend = new Friend();
    185             friend.setName(list_data.get(i));
    186             friends.add(friend);
    187         }
    188         strings = new String[friends.size()];
    189         for (int i = 0; i < friends.size(); i++) {
    190             char letter = friends.get(i).getName().substring(0, 1).charAt(0);
    191             String currentLetter = (letter + "").toUpperCase();
    192             // 上一个汉语拼音首字母,如果不存在为""
    193             String lastLetter = (i - 1) > 0 ? (friends.get(i - 1).getName()
    194                     .substring(0, 1).charAt(0) + "").toUpperCase() : "";
    195             if (!lastLetter.equals(currentLetter)) {
    196                 alphaIndex.put(currentLetter, i);
    197                 strings[i]=currentLetter;
    198             }
    199 
    200         }
    201 
    202     }
    203 
    204     
    205     private void createAd() {
    206         ad = IFLYFullScreenAd.createFullScreenAd(this,
    207                 "FDDE8F2023143C2E8702E80CE88B97CA");
    208         ad.setAdSize(IFLYAdSize.FULLSCREEN);
    209         ad.setParameter(AdKeys.SHOW_TIME_FULLSCREEN, "6000");
    210         ad.setParameter(AdKeys.DOWNLOAD_ALERT, "true");
    211         ad.loadAd(new IFLYAdListener() {
    212             
    213             @Override
    214             public void onAdReceive() {
    215                 ad.showAd();
    216             }
    217             
    218             @Override
    219             public void onAdFailed(AdError arg0) {
    220                 Toast.makeText(
    221                         getApplicationContext(),
    222                         arg0.getErrorCode() + "****"
    223                                 + arg0.getErrorDescription(), 0).show();
    224                 
    225             }
    226             
    227             
    228             @Override
    229             public void onAdClose() {
    230                 
    231             }
    232             
    233             @Override
    234             public void onAdClick() {
    235                 
    236             }
    237 
    238             @Override
    239             public void onAdExposure() {
    240                 // TODO Auto-generated method stub
    241                 
    242             }
    243         });
    244     }
    245     
    246     @Override
    247     protected void onDestroy() {
    248         // TODO Auto-generated method stub
    249         super.onDestroy();
    250         WindowManager windowManager = (WindowManager) this
    251                 .getSystemService(Context.WINDOW_SERVICE);
    252         windowManager.removeView(overlay);
    253     }
    254     
    255 }
    View Code

    2.Adapter

     1 package com.anna.contact.adapter;
     2 
     3 import java.util.List;
     4 
     5 import com.anna.contact.R;
     6 import com.anna.contact.entity.Friend;
     7 
     8 import android.content.Context;
     9 import android.view.LayoutInflater;
    10 import android.view.View;
    11 import android.view.ViewGroup;
    12 import android.widget.BaseAdapter;
    13 import android.widget.ImageView;
    14 import android.widget.TextView;
    15 
    16 public class MyFriendsAdapter extends BaseAdapter {
    17     LayoutInflater inflater;
    18     List<Friend> list;
    19 
    20     public MyFriendsAdapter(Context context, List<Friend> list) {
    21         inflater = LayoutInflater.from(context);
    22         this.list = list;
    23     }
    24 
    25     @Override
    26     public int getCount() {
    27         // TODO Auto-generated method stub
    28         return list.size();
    29     }
    30 
    31     @Override
    32     public Object getItem(int position) {
    33         // TODO Auto-generated method stub
    34         return list.get(position);
    35     }
    36 
    37     @Override
    38     public long getItemId(int position) {
    39         // TODO Auto-generated method stub
    40         return position;
    41     }
    42 
    43     @SuppressWarnings("null")
    44     @Override
    45     public View getView(int position, View convertView, ViewGroup parent) {
    46         // TODO Auto-generated method stub
    47         viewHolder holder;
    48         if (convertView == null) {
    49             convertView = inflater.inflate(
    50                     R.layout.vip_myactivity_myfriend_item, null);
    51             holder = new viewHolder();
    52             holder.vip_friend_letter = (TextView) convertView
    53                     .findViewById(R.id.vip_friend_letter);
    54             holder.vip_friend_name = (TextView) convertView
    55                     .findViewById(R.id.vip_friend_item_name);
    56             convertView.setTag(holder);
    57         } else {
    58             holder = (viewHolder) convertView.getTag();
    59         }
    60 
    61         holder.vip_friend_name.setText(list.get(position).getName());
    62         char letter = list.get(position).getName().substring(0, 1).charAt(0);
    63         String currentLetter = (letter + "").toUpperCase();
    64         
    65         String lastLetter = (position - 1) > 0 ? (list.get(position - 1)
    66                 .getName().substring(0, 1).charAt(0) + "") : "";
    67         if (!lastLetter.equals(currentLetter)) {
    68             holder.vip_friend_letter.setText(currentLetter);
    69             holder.vip_friend_letter.setVisibility(View.VISIBLE);
    70         } else {
    71             holder.vip_friend_letter.setVisibility(View.GONE);
    72 
    73         }
    74 
    75         return convertView;
    76     }
    77 
    78     public class viewHolder {
    79         TextView vip_friend_letter;
    80         ImageView vip_friend_logo;
    81         TextView vip_friend_name;
    82     }
    83 
    84 }
    View Code

    3.entity

     1 package com.anna.contact.entity;
     2 
     3 import android.widget.ImageView;
     4 
     5 public class Friend {
     6     private String name;
     7     private String letter;
     8     private ImageView logo;
     9 
    10     public String getName() {
    11         return name;
    12     }
    13 
    14     public void setName(String name) {
    15         this.name = name;
    16     }
    17 
    18     public String getLetter() {
    19         return letter;
    20     }
    21 
    22     public void setLetter(String letter) {
    23         this.letter = letter;
    24     }
    25 
    26     public ImageView getLogo() {
    27         return logo;
    28     }
    29 
    30     public void setLogo(ImageView logo) {
    31         this.logo = logo;
    32     }
    33 
    34 }
    View Code

    4.view

      1 package com.anna.contact.view;
      2 
      3 import android.content.Context;
      4 import android.graphics.Canvas;
      5 import android.graphics.Color;
      6 import android.graphics.Paint;
      7 import android.graphics.Typeface;
      8 import android.util.AttributeSet;
      9 import android.view.MotionEvent;
     10 import android.view.View;
     11 
     12 public class LetterlistViewForFriend extends View {
     13 
     14     public LetterlistViewForFriend(Context context, AttributeSet attrs)
     15     {
     16         super(context, attrs);
     17         // TODO Auto-generated constructor stub
     18     }
     19     public LetterlistViewForFriend(Context context)
     20     {
     21         super(context);
     22     }
     23 
     24     public LetterlistViewForFriend(Context context, AttributeSet attrs, int defStyle)
     25     {
     26         super(context, attrs, defStyle);
     27     }
     28 
     29     OnTouchingLetterChangedListener onTouchingLetterChangedListener;
     30     String[] b =
     31     {"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" };
     32     int choose = -1;
     33     Paint paint = new Paint();
     34     
     35     boolean showBkg = false;
     36 
     37     @Override
     38     protected void onDraw(Canvas canvas)
     39     {
     40         super.onDraw(canvas);
     41         
     42         if (showBkg)
     43         {
     44             canvas.drawColor(Color.parseColor("#40000000"));
     45         }
     46 
     47         int height = getHeight();
     48         int width = getWidth();
     49         int singleHeight = height / b.length;
     50         for (int i = 0; i < b.length; i++)
     51         {
     52             //paint.setTextSize(19) ;
     53             paint.setColor(Color.BLACK);
     54             paint.setTypeface(Typeface.DEFAULT_BOLD);
     55             
     56             paint.setAntiAlias(true);
     57             if (i == choose)
     58             {
     59                 paint.setColor(Color.parseColor("#3399ff"));
     60                 paint.setFakeBoldText(true);
     61             }
     62             float xPos = width / 2 - paint.measureText(b[i]) / 2;
     63             float yPos = singleHeight * i + singleHeight;
     64             
     65             canvas.drawText(b[i], xPos, yPos, paint);
     66             paint.reset();
     67         }
     68 
     69     }
     70 
     71     @Override
     72     public boolean dispatchTouchEvent(MotionEvent event)
     73     {
     74         final int action = event.getAction();
     75         final float y = event.getY();
     76         final int oldChoose = choose;
     77         final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;
     78         final int c = (int) (y / getHeight() * b.length);
     79 
     80         switch (action)
     81         {
     82         case MotionEvent.ACTION_DOWN:
     83             showBkg = true;
     84             if (oldChoose != c && listener != null)
     85             {
     86                 if (c > 0 && c < b.length)
     87                 {
     88                     listener.onTouchingLetterChanged(b[c]);
     89                     choose = c;
     90                     invalidate();
     91                 }
     92             }
     93 
     94             break;
     95         case MotionEvent.ACTION_MOVE:
     96             if (oldChoose != c && listener != null)
     97             {
     98                 if (c > 0 && c < b.length)
     99                 {
    100                     listener.onTouchingLetterChanged(b[c]);
    101                     choose = c;
    102                     invalidate();
    103                 }
    104             }
    105             break;
    106         case MotionEvent.ACTION_UP:
    107             showBkg = true;
    108             if (oldChoose != c && listener != null)
    109             {
    110                 if (c > 0 && c < b.length)
    111                 {
    112                     listener.onTouchingLetterChanged(b[c]);
    113                     choose = c;
    114                     invalidate();
    115                 }
    116             }
    117             
    118             break;
    119         }
    120         return true;
    121     }
    122 
    123     
    124     @Override
    125     public boolean onTouchEvent(MotionEvent event)
    126     {
    127         return super.onTouchEvent(event);
    128     }
    129 
    130     public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener onTouchingLetterChangedListener)
    131     {
    132         this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;
    133     }
    134 
    135     public interface OnTouchingLetterChangedListener
    136     {
    137         public void onTouchingLetterChanged(String s);
    138     }
    139 }
    View Code

    源码下载:https://yunpan.cn/cr9yS4D6RWwid访问密码 09fa

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/lijinlun0825/p/5176158.html
Copyright © 2011-2022 走看看