通讯录右侧字母 dianlog

来源:互联网 发布:ora01109数据库未打开 编辑:程序博客网 时间:2024/05/17 02:02


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.setColor(getResources().getColor(R.color.text_333));
paint.setTypeface(Typeface.DEFAULT);
paint.setAntiAlias(true);
paint.setTextSize(30);
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;
invalidate();
}
}


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);
}


}





<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/shape_corner_white_bg"
    android:orientation="vertical" 
    android:padding="20dip">


    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="20dip"
        android:paddingBottom="40dip"
        android:text="是否确认删除?"
        android:textColor="@color/text_333"
        android:textSize="18sp" 
        android:visibility="gone"/>


    <TextView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="20dip"
        android:paddingBottom="40dip"
        android:textColor="@color/text_333"
        android:textSize="18sp" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:gravity="center">


            <TextView
                android:id="@+id/define"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="是"
                android:paddingTop="5dip"
                android:paddingBottom="5dip"
                android:paddingLeft="30dip"
                android:paddingRight="30dip"
                android:background="@drawable/shape_red_button"
                android:textColor="@color/white"
                android:textSize="18sp" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" 
            android:gravity="center">


            <TextView
                android:id="@+id/cancel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="否"
                android:paddingTop="5dip"
                android:paddingBottom="5dip"
                android:paddingLeft="30dip"
                android:paddingRight="30dip"
                android:textColor="@color/text_333"
                android:background="@drawable/shape_white_button_red_line"
                android:textSize="18sp" />
        </LinearLayout>
    </LinearLayout>


</LinearLayout>





public class MyDialog extends Dialog implements OnClickListener{
Context mContext;
String title;
String msg;
String cancelText;
String defineText;
public MyDialog(Context context) {
super(context);
this.mContext = context;
}
@SuppressWarnings("deprecation")
public MyDialog(Activity activity,String title,String msg,String cancelText,String defineText) {
super(activity, R.style.dialog_with_alpha);
this.title = title;
this.msg = msg;
this.cancelText = cancelText;
this.defineText = defineText;
setContentView(R.layout.text_dialog);
Window dialogWindow = getWindow();
WindowManager m = (activity).getWindowManager();
Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
WindowManager.LayoutParams lp = dialogWindow.getAttributes(); // 获取对话框当前的参数值
lp.width = (int) (d.getWidth() * 0.8); // 宽度设置为屏幕的0.8
dialogWindow.setAttributes(lp);
setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失  
initViews();
}


private void initViews() {
TextView tv_title = (TextView) findViewById(R.id.title);
tv_title.setText(title);
TextView content = (TextView) findViewById(R.id.content);
content.setText(msg);
TextView cancel = (TextView) findViewById(R.id.cancel);
cancel.setText(cancelText);
cancel.setOnClickListener(this);
TextView define = (TextView) findViewById(R.id.define);
define.setText(defineText);
define.setOnClickListener(this);
}




@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.cancel:
onclickListenr.onClick(false);
dismiss();
break;
case R.id.define:
onclickListenr.onClick(true);
dismiss();
break;
}
}

OnclickListenr onclickListenr;

public interface OnclickListenr{
void onClick(boolean is);
}

public void setOnclickListenr(OnclickListenr onclickListenr){
this.onclickListenr = onclickListenr;
}


}

0 0
原创粉丝点击