Android UI (5) 클 라 우 드 주소록 항목 의 연락처 목록
11387 단어 android ui
돈 을 기부 할 사람 은 알 리 페 이 를 쳐 라: 13958686678 (미장이 농담 ~)
머리말
안 드 로 이 드 UI 시 리 즈 를 계속 하면 미장이 가 또 허튼소리 를 하기 시작 할 것 이다.하하, 오늘 글 머리 에 알 리 페 이 계 정 을 붙 였 습 니 다.나 도 정말 웃긴다. 지금까지 블 로 그 를 쓸 돈 을 받 지 못 했다.나 누 거나.미장이 도 걸 고 웃 길 뿐 이 야.웃 으 면 웃 어, 나 도 웃 어.
나의 스승 과 관 계 를 맺다.미장이 에 게 도 많은 것 을 가 르 쳤 다.미장이 가 계속 공부 하고 있 을 뿐 이 야.이것 은 스승 님 께 서 저 에 게 주신 말씀 입 니 다.
잠 을 적 게 자고, 놀 지 않 고, 메 인 박자 의 우선 순 위 를 가 려 라.동료의 능력 을 발휘 해 야 지, 무슨 일이 든 스스로 해 야 하 는 것 은 아니다.
본문
오늘 할 말 이 많다.주로 코드 를 보 러 가세 요.중요 한 것 을 소개 하 겠 습 니 다.그리고 소스 코드 를 직접 꿰 뚫 어 보 세 요.다음은 클 라 우 드 주소록 의 연락처 목록 입 니 다. 사 이 드 스 케 이 트 선택, 검색 상자 가 있 습 니 다.
미장이 의 생각:
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 위의 글 이나 링크 가 도움 이 된다 면 글 버튼 이나 페이지 오른쪽 아래 에서 '좋아요' 단 추 를 누 르 는 것 을 잊 지 마 세 요.페이지 오른쪽 에 있 는 '공유' 부유 단 추 를 누 르 면 더 많은 사람들 이 이 글 을 읽 을 수 있 습 니 다.