Android UI (5) 클 라 우 드 주소록 항목 의 연락처 목록

11387 단어 android ui
저자: 진흙 벽돌 기와 펄프 목수 사이트: http://blog.csdn.net/jeffli1993 개인 서명: 훌륭 한 대작 을 쓰 려 는 사람 은 제1 장 을 완성 하지 못 하 는 경우 가 많다.교류 QQ 군: [프로 그래 밍 의 아름다움 365234583] http://jq.qq.com/?_wv=1027&k=XVfBTo
돈 을 기부 할 사람 은 알 리 페 이 를 쳐 라: 13958686678 (미장이 농담 ~)
머리말
    안 드 로 이 드 UI 시 리 즈 를 계속 하면 미장이 가 또 허튼소리 를 하기 시작 할 것 이다.하하, 오늘 글 머리 에 알 리 페 이 계 정 을 붙 였 습 니 다.나 도 정말 웃긴다. 지금까지 블 로 그 를 쓸 돈 을 받 지 못 했다.나 누 거나.미장이 도 걸 고 웃 길 뿐 이 야.웃 으 면 웃 어, 나 도 웃 어.
    나의 스승 과 관 계 를 맺다.미장이 에 게 도 많은 것 을 가 르 쳤 다.미장이 가 계속 공부 하고 있 을 뿐 이 야.이것 은 스승 님 께 서 저 에 게 주신 말씀 입 니 다.
잠 을 적 게 자고, 놀 지 않 고, 메 인 박자 의 우선 순 위 를 가 려 라.동료의 능력 을 발휘 해 야 지, 무슨 일이 든 스스로 해 야 하 는 것 은 아니다.
본문
    오늘 할 말 이 많다.주로 코드 를 보 러 가세 요.중요 한 것 을 소개 하 겠 습 니 다.그리고 소스 코드 를 직접 꿰 뚫 어 보 세 요.다음은 클 라 우 드 주소록 의 연락처 목록 입 니 다. 사 이 드 스 케 이 트 선택, 검색 상자 가 있 습 니 다.
7MA6B{~~@L(1VSV)3RCJ6$K (3%N}[Z4[)9@{O2MMOT64VO [S8]2(EET{GE2)%MZJ{I3MI
    미장이 의 생각:
  • 하나의 barTop 층: ImgView 두 개 또는 Button, 하나의 TextView, styles. xml 로 스타일 을 제어 합 니 다.
  • 핵심 중간 listView 와 사 이 드 슬라이드 View 검색 상자 View 사용자 정의 구현.이것 은 본 강의 의 중점 이 될 것 이다. 
  • 아래쪽 TextView 의 실현      

  • 3. 핵심 코드 실현    미장이 가 방금 점심 을 먹고 와 서 잡담 을 하 다.길에서 흑인 한 쌍 이 노래 를 부 르 며 식당 을 향 해 밥 을 먹 으 러 갔다.생활 은 이렇게 화기애애 해 야 한다.    아래 미장이 가 옆 에 있 는 사 이 드 바 (SideBar) 를 먼저 실현 하 는 것 은 바로 전편 Android UI (4) 클 라 우 드 주소록 프로젝트 의 클 라 우 드 업데이트 진행 항목 구현 의 사용자 정의 View 와 같다.Canvas, Paint 의 기초 만 알 았 으 면 좋 겠 어 요.우 리 는 26 글자 의 String 배열 을 간단하게 정의 한 다음 에 반복 해서 Paint 를 나 오 면 됩 니 다.사실은 이렇게 간단 하 다.
    package org.nsg.views;
    
    
    
    
    
    import com.example.android05.R;
    
    
    
    import android.content.Context;
    
    import android.graphics.Canvas;
    
    import android.graphics.Color;
    
    import android.graphics.Paint;
    
    import android.graphics.Typeface;
    
    import android.graphics.drawable.ColorDrawable;
    
    import android.util.AttributeSet;
    
    import android.view.MotionEvent;
    
    import android.view.View;
    
    import android.widget.TextView;
    
    
    
    public class SideBar extends View
    
    {
    
    	// touching event
    
    	private OnTouchingLetterChangedListener onTouchingLetterChangedListener;
    
    	// 26 letters
    
    	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", "#" 
    
    		};
    
    	// if choosed
    
    	private int choose  = -1;
    
    	private Paint paint = new Paint();
    
    	
    
    	private TextView mTextDialog;
    
    	
    
    	public void setmTextDialog(TextView mTextDialog)
    
    	{
    
    		this.mTextDialog = mTextDialog;
    
    	}
    
    
    
    	public SideBar(Context context, AttributeSet attrs, int defStyleAttr)
    
    	{
    
    		super(context, attrs, defStyleAttr);
    
    	}
    
    
    
    	public SideBar(Context context, AttributeSet attrs)
    
    	{
    
    		super(context, attrs);
    
    	}
    
    
    
    	public SideBar(Context context)
    
    	{
    
    		super(context);
    
    	}
    
    
    
    	// override onDraw function
    
    	protected void onDraw(Canvas canvas)
    
    	{
    
    		super.onDraw(canvas);
    
    		// get the height
    
    		int height = getHeight();
    
    		// get the width
    
    		int width = getWidth();
    
    		// get one letter height
    
    		int singleHeight = height / b.length;
    
    		
    
    		for (int i = 0; i < b.length; i++)
    
    		{
    
    			paint.setColor(Color.rgb(33, 65, 98));
    
    			paint.setTypeface(Typeface.DEFAULT_BOLD);
    
    			paint.setAntiAlias(true);
    
    			paint.setTextSize(20);
    
    			
    
    			// if choosed 
    
    			if(i == choose)
    
    			{
    
    				paint.setColor(Color.parseColor("#3399ff"));
    
    				paint.setFakeBoldText(true);
    
    			}
    
    			
    
    			// draw text
    
    			float x = width / 2 - paint.measureText(b[i]) / 2;
    
    			float y = singleHeight * i + singleHeight;
    
    			canvas.drawText(b[i], x, y, paint);
    
    			paint.reset();
    
    		}
    
    		
    
    		
    
    	}
    
    	
    
    	
    
    
    
    	@SuppressWarnings("deprecation")
    
    	@Override
    
    	public boolean dispatchTouchEvent(MotionEvent event)
    
    	{
    
    		final int action = event.getAction();
    
    		final float y = event.getY(); // get the Y 
    
    		final int oldChoose = choose;
    
    		final OnTouchingLetterChangedListener changedListener = onTouchingLetterChangedListener;
    
    		final int letterPos = (int)( y / getHeight() * b.length);
    
    		
    
    		switch (action)
    
    		{
    
    			case MotionEvent.ACTION_UP:
    
    				setBackgroundDrawable(new ColorDrawable(0x00000000));
    
    				choose = -1;
    
    				invalidate();
    
    				if (mTextDialog != null)
    
    					mTextDialog.setVisibility(View.INVISIBLE);
    
    				break;
    
    				
    
    			default:
    
    				setBackgroundResource(R.drawable.bg_sidebar);
    
    				if (oldChoose != letterPos)
    
    				{
    
    					if (letterPos >= 0 && letterPos < b.length)
    
    					{
    
    						if (changedListener != null)
    
    							changedListener.onTouchingLetterChanged(b[letterPos]);
    
    						if (mTextDialog != null)
    
    						{
    
    							mTextDialog.setText(b[letterPos]);
    
    							mTextDialog.setVisibility(View.VISIBLE);
    
    						}
    
    						
    
    						choose = letterPos;
    
    						invalidate();
    
    					}
    
    				}
    
    				break;
    
    		}
    
    		return true;
    
    	}
    
    
    
    	public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener changedListener)
    
    	{
    
    		this.onTouchingLetterChangedListener = changedListener;
    
    	}
    
    	
    
    	public interface OnTouchingLetterChangedListener
    
    	{
    
    		public void onTouchingLetterChanged(String str);
    
    	}
    
    }
    
    
      이것 을 다 한 이상 우 리 는 이 listView 를 실현 할 것 이다. 사실은 ListView 가 가장 잘 이 루어 진 것 이다.먼저 ListView 를 정의 한 다음 에 해당 하 는 item 의 xml 를 만 듭 니 다.코드 로 그것들 을 순환 시 키 면 된다.  다음은 item 의 xml 코드 입 니 다.
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
        android:layout_width="fill_parent"
    
        android:layout_height="match_parent"
    
        android:gravity="center_vertical"
    
        android:orientation="vertical" >
    
        
    
        <TextView
    
            android:id="@+id/txt_catalog"
    
            android:layout_width="fill_parent"
    
            android:layout_height="wrap_content"
    
            android:layout_weight="1"
    
            android:paddingBottom="5dp"
    
            android:paddingTop="5dp"
    
            android:paddingLeft="12dp"
    
            android:text="A"
    
            android:textColor="@color/bluejeff"
    
            android:drawableBottom="@drawable/line_blue" />
    
        
    
    	<RelativeLayout 
    
    	    android:layout_width="wrap_content"
    
    	    android:layout_height="wrap_content">
    
    	    
    
    	    <ImageView
    
    	       android:id="@+id/user_head"
    
    	       android:layout_width="wrap_content"
    
    	       android:layout_height="wrap_content"
    
    	       android:layout_marginLeft="12dp"
    
    	       android:layout_marginTop="6dp"
    
    	       android:layout_marginBottom="6dp"
    
    	       android:background="@drawable/bg_border"
    
    	       android:src="@drawable/user_head" />
    
    	    
    
    	    <LinearLayout 
    
    	        android:layout_width="match_parent"
    
    	        android:layout_height="wrap_content"
    
    	        android:layout_toRightOf="@id/user_head"
    
    	        android:background="@color/white"
    
    	        android:orientation="vertical">
    
    	         <TextView
    
    		        android:id="@+id/txt_user_name"
    
    		        android:layout_width="wrap_content"
    
    		        android:layout_height="wrap_content"
    
    		        android:textColor="@color/black"
    
    		       	android:layout_marginTop="12dp"
    
    		       	android:layout_marginLeft="10dp"
    
    		       	android:layout_marginBottom="6dp"
    
    		        android:textSize="20sp"
    
    		        android:text="Jeff Lee"/>
    
    
    
    	         <TextView
    
    	             android:id="@+id/txt_user_list_info"
    
    	             android:layout_width="wrap_content"
    
    	             android:layout_height="30dp"
    
    	             android:textSize="12sp"
    
    	             android:layout_marginLeft="10dp"
    
    	             android:text="IT         "
    
    	             android:textColor="@color/gray" />
    
    
    
    	     </LinearLayout>
    
    	    <TextView
    
    	        android:id="@+id/txt_user_id"
    
    	        android:layout_width="wrap_content"
    
    	        android:layout_height="wrap_content"
    
    	        android:textColor="#336598"
    
    	        android:visibility="gone"
    
    	        android:text="1"/>
    
    	</RelativeLayout>
    
    	  
    
    </LinearLayout>
    
    
      그리고 우 리 는 그 검색 상 자 를 실현 했다. 검색 상 자 는 사실 TextView 로 보 였 다.그래서 우 리 는 TextView 의 종 류 를 계승 하고 초점 통 제 를 실현 하 는 모니터 등 을 우리 에 게 더 잘 사용 하도록 한다.어 려 운 점 도 없 는데 검색 아이콘 을 그 렸 을 뿐 이에 요.코드 는 나 도 아래 에서 나 왔 다.  마침내 큰 성 과 를 거 두 었 다.소결 아래, 사실 이 인터페이스 에는 SidleBar 가 하나 더 추가 되 었 다.우리 Android UI (3) SlidingMenu 슬라이딩 메뉴 구현 (상세 공식) 에서 얘 기 했 어 요.user 에 그룹 이 있 거나 전화번호 부 에 있 기 때 문 입 니 다.그리고 한 화면 은 너무 귀 찮 게 생각 하지 마 세 요.하나하나 와 서 성취 감 을 느끼다.옛말 에 한 마디 하 자 면, 훌륭 한 대작 을 쓰 려 는 사람 은 왕왕 제1장 을 완성 하지 못 한다.  모든 일 은 똑 같 으 니 세부 사항 에 주의해 라.한 걸음 한 걸음 씩, Think big, Start small, Scale fast. 이 치 를 다 알 고 있 으 면 하 세 요.총화   이 장 에서 클 라 우 드 주소록 에 관 한 화면 을 천천히 공유 하 겠 습 니 다.프로젝트 도 아래 에 있 는 링크 를 다운로드 하여 공부 할 수 있 도록 제공 합 니 다.이것 은 비교적 어렵 습 니 다. 여러분 코드 를 잘 보 세 요.코드 가 아래 에 있 는 링크: http://files.cnblogs.com/Alandre/Android05.rar   위의 글 이나 링크 가 도움 이 된다 면 글 버튼 이나 페이지 오른쪽 아래 에서 '좋아요' 단 추 를 누 르 는 것 을 잊 지 마 세 요.페이지 오른쪽 에 있 는 '공유' 부유 단 추 를 누 르 면 더 많은 사람들 이 이 글 을 읽 을 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기