Toast的显示位置可以我们自己设置,通过如下命令:
toast = Toast.makeText(getContext(), "" + (char) ('A' + position),Toast.LENGTH_SHORT);
//可以控制toast显示的位置
toast.setGravity(Gravity.LEFT, xoffset, yoffset);
toast.show();
同时我们通过toast.cancle()可以用来取消一个toast,这在我们滑动到下一个字母的时候,就可以取消掉上一个字母的显示。
if(toast!=null)toast.cancel();
package com.zqxue.Review151222;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
/** * Created by XUE on 2015/12/22. */ public class SimpleView extends LinearLayout {private Paint paint;
private float stopY;
private Toast toast;
public SimpleView(Context context) {super(context);
}public SimpleView(Context context, AttributeSet attrs) {super(context, attrs);
init(context,attrs);
}public void init(Context context,AttributeSet attrs){paint = new Paint();
paint.setColor(Color.RED);
for (int i = 0; i < 26; i++) {TextView textView = new TextView(context);
String text = Character.toString((char)('A'+i));
textView.setText(text);
ViewGroup.LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
0,
1
);
textView.setLayoutParams(layoutParams);
//textSize
int height = getHeight();
int textSize = height/26-2;
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
textView.setGravity(Gravity.RIGHT);
addView(textView);
}}private int currentPosition=-1;
@Override
public boolean onTouchEvent(MotionEvent event) {boolean ret = false;
int action = event.getAction();
float ex = event.getX();
float ey = event.getY();
stopY=ey;
int position = -1;
String type = "";
switch (action){case MotionEvent.ACTION_DOWN:type ="DOWN";
currentPosition=-1;
//toast if(toast!=null)toast.cancel();toast = Toast.makeText(getContext(), "" + (char) ('A' + position),Toast.LENGTH_SHORT);Log.d("151222MY","LONG="+Toast.LENGTH_LONG+" SHORT="+Toast.LENGTH_SHORT+ ex+""+ey);//可以控制toast显示的位置//toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2);toast.setGravity(Gravity.LEFT, getWidth() - 150, (int) ey - getHeight() / 2);toast.show();
ret=true;
break;
case MotionEvent.ACTION_MOVE:int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {View child = getChildAt(i);
int top = child.getTop();
int left = child.getLeft();
int right = child.getRight();
int bottom = child.getBottom();
if(top<=ey&&left<=ex){if(right>=ex&&bottom>=ey){position = i;
}}if(position>-1&¤tPosition!=position){Log.d("151222MY","click "+position);
Log.d("151222MY","click"+(char)('A'+position));
currentPosition=position;
if(toast!=null)toast.cancel();toast = Toast.makeText(getContext(), "" + (char) ('A' + position),Toast.LENGTH_SHORT);Log.d("151222MY","LONG="+Toast.LENGTH_LONG+" SHORT="+Toast.LENGTH_SHORT);//可以控制toast显示的位置//toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2);toast.setGravity(Gravity.LEFT, getWidth()-150, (int)ey - getHeight() / 2);toast.show();
}}type="MOVE";
break;
case MotionEvent.ACTION_UP:type="UP";
break;
}//Log.d("151222MY", type);
return ret;
}@Override
protected void onDraw(Canvas canvas) {super.onDraw(canvas);
canvas.drawLine(0, 0, 300, stopY, paint);
Log.d("151222MY","onDraw");
}
}