小弟菜鸟,急求助。
我将天天歌词的那个继承的TextView的类改写了下,结果在ActionDown被触发后,TextView的大小直接全屏了,而我要做的只是要移动他的位置。求助。其他的都没有改。只是改了TopFrame的addView里边的第一个参数。 下载这个源码的地址是:
http://d.download.csdn.net/down/3231657/feng88724。import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.Typeface;
import android.graphics.Shader.TileMode;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.TextView;public class LCTV extends TextView {
private final String TAG = MyTextView.class.getSimpleName(); public static int TOOL_BAR_HIGH = 0;
public static WindowManager.LayoutParams params = new WindowManager.LayoutParams();
private float startX;
private float startY;
private float x;
private float y;
private float float1 = 0.0f;
private float float2 = 0.01f; private Handler handler; // 1.
WindowManager wm = (WindowManager) getContext().getApplicationContext()
.getSystemService(getContext().WINDOW_SERVICE); private String text; public LCTV(Context context) {
super(context);
Log.v("LCTV   My text View", "creat");
text = "世上只有妈妈好,有妈的孩子像块宝";
this.setWidth(200);
this.setHeight(200);
this.setBackgroundColor(Color.YELLOW);
// 下面这句话在此并不是控制歌词大小,仅仅是为了控制背景大小,如果不设置的话,Paint字体大时会被遮挡
this.setTextSize(20f);
// TODO Auto-generated constructor stub
} @Override
protected void onDraw(Canvas canvas) { // 2.
// TODO Auto-generated method stub
Log.v("LCTV  onDraw", "on draw function");
super.onDraw(canvas);
Paint p = new Paint();
// p.setShader(shader);
// 下面这句才控制歌词大小
p.setTextSize(20f);
p.setColor(Color.BLUE);
p.setTypeface(Typeface.DEFAULT_BOLD);
// 此处x,y坐标也要注意,尤其是y坐标,要与字体大小协调
canvas.drawText(text, 0, 20, p);
} @Override
public boolean onTouchEvent(MotionEvent event) {
x = event.getRawX();
y = event.getRawY() - TOOL_BAR_HIGH;
Log.d(TAG, "------X: " + x + "------Y:" + y);
switch (event.getAction()) { case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
//updatePosition();
break;
case MotionEvent.ACTION_MOVE:
updatePosition();
break;
case MotionEvent.ACTION_UP:
updatePosition();
startX = startY = 0;  
break;
}
return true;
} // 更新浮动窗口位置参数
private void updatePosition() {
// View的当前位置
params.x = (int) (x - startX);
params.y = (int) (y - startY); wm.updateViewLayout(this, params);  }
}