android 触屏问题(出现偏差怎么回事)

simSunny 2012-03-19 04:40:00
先贴源码,嘎嘎,各位大神帮下忙的,急用哈

程序:实现文字的拖动~~~但是手指触屏拖动的地方总是和文字显示的地方不一致




public class EyesText extends Activity {
//textValue是从里一个activity中得到的,bitmap也是一样~~~要是要调代码的话,自己随便给个值就可以了
private Bitmap bitmap,textBitmap;
private ImageView imageViewForText,textImage;
private Button addTextButton;
private String textValue=null;
float mx,my;
private int screenX,screenY;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

Intent intent =getIntent();
textValue=intent.getStringExtra("addText");


DisplayMetrics dm= new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenX=dm.widthPixels;
screenY=dm.heightPixels;

setContentView(R.layout.eyestext);

mx=bitmap.getWidth()/2;
my=bitmap.getHeight()/2;

imageViewForText=(ImageView)findViewById(R.id.eyestext_imageview);
imageViewForText.setImageBitmap(bitmap);

addTextButton=(Button)findViewById(R.id.eyestext_addtext);
addTextButton.setOnClickListener(addTextButtonClickListener);

}

private View.OnClickListener addTextButtonClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
Bundle bundle=new Bundle();
bundle.putString("testValue",textValue);
intent.putExtras(bundle);
intent.setClass(EyesText.this, EyesTextDialog1.class);
startActivityForResult(intent,1);
}
};
protected void onActivityResult(int requestCode, int resultCode,
Intent data){
switch (resultCode){
case RESULT_OK:

Bundle b = data.getExtras();
textValue= b.getString("addtextValue");
Log.i("addTextValue--------------------->",textValue);

imageViewForText.setImageBitmap(addText());
}
}
private Bitmap addText(){
Bitmap newb = Bitmap.createBitmap( bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888 );
Canvas canvasTemp = new Canvas( newb );
canvasTemp.drawColor(Color.TRANSPARENT);
Paint p = new Paint();
//Typeface font=Typeface.createFromAsset(getAssets(), m_Type[type]);
//p.setColor(m_Color[color]);
//p.setTypeface(font);
p.setTextSize(30);
canvasTemp.drawBitmap(bitmap, 0, 0, null);
canvasTemp.drawText(textValue,mx,my,p);
Log.i("图片移动mx---------->"," "+mx);
Log.i("图片移动my---------->"," "+my);
return newb;
}


public boolean onTouchEvent(MotionEvent event){
float x= event.getX();
float y= event.getY();
Log.i("点击屏幕mx---------->"," "+mx);
Log.i("点击屏幕my---------->"," "+my);
mx=x;
my=y;

try{
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
imageViewForText.setImageBitmap(addText());
//movePic(mx,my);
break;
case MotionEvent.ACTION_MOVE:
imageViewForText.setImageBitmap(addText());
//movePic(mx,my);
break;
case MotionEvent.ACTION_UP:
imageViewForText.setImageBitmap(addText());
//movePic(mx,my);
break;
}
}
catch(Exception e){
Log.i("error--------->MotionEvent","---------->MotionEvetn_faild");
e.printStackTrace();
}
return true;
}


}



问题:但我响应action_move这个事件是:手指触屏拖动的地方总是和文字显示的地方不一致,希望各位大神给解答一下的,邪谢了哈~~
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
残诗 2012-04-26
  • 打赏
  • 举报
回复 1
和线程没有多少关系吧,触笔点在对象上后,一般不是对象的原点。就是左上角的顶点,如果你能精确的点在那个地方,拖动就不会有误差,否则要计算触笔DOWN的位置相对对象左顶点的偏移。新的位置坐标要减去这个偏移大小。
simSunny 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouyongyang621 的回复:]

这么频繁的操作不要在主线程中处理.
[/Quote]

放到线程中就可以了么~~~我试下的哈~~谢了
梦_枫 2012-03-19
  • 打赏
  • 举报
回复
这么频繁的操作不要在主线程中处理.
simSunny 2012-03-19
  • 打赏
  • 举报
回复
自己顶一下好了,不要沉了呀~~~

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧