Im은 Android에 새로운 기능을 추가 했으므로 사용자와 상호 작용하는 뷰가 거의없는 응용 프로그램을 프로그래밍하는 것이 전부입니다. 내 접근 방식은 XML 파일의 일부 imageviews 레이아웃을 정의하고 해당 imageviews 이벤트를 프로그래밍 방식으로 처리하는 것입니다. 그러나 xml에 이전에 정의 된 RelativeLayout에 .setOnTouchListener()를 할당하는 데 문제가 있습니다.xml에 정의 된 레이아웃에 .setOnTouchListener()를 할당하십시오.
코드는 다음과 같습니다
public class ThreeActivity extends Activity implements OnTouchListener {
ImageView iv2;
RelativeLayout rl;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fish);
ImageView iv1 = (ImageView) findViewById(R.id.ImageView02);
iv1.setAlpha(50);
iv2 = (ImageView) findViewById(R.id.ImageView01);
iv2.setId(2);
iv2.setOnTouchListener(this);
iv2.setFocusable(true);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (iv2.isFocused()) {
TranslateAnimation translateAnim = new TranslateAnimation(
iv2.getLeft(), event.getX(), iv2.getTop(), event.getY());
translateAnim.setDuration(1000);
translateAnim
.setInterpolator(new AccelerateDecelerateInterpolator());
translateAnim.setFillAfter(true);
iv2.setAnimation(translateAnim);
iv2.startAnimation(translateAnim);
}
return true;
}
}
을 분명히 내가 이미지 뷰가 포커스 여러 이벤트를 수신하고 접촉 위치로 이동보다가되고 싶어요. 그리고 이것은임이 곤경에 처하는 곳입니다. RelativeLayout는 터치 만하는 터치 리스너가 없기 때문에 상호 작용할 수 없습니다.
이 문제를 해결하거나 다른 방법을 추천 해 줄 수 있습니까? 도움 주셔서 감사합니다.
을하지만 아무도 할 수 있습니다 : 당신의
onTouch()
방법에, 당신은 이런 식으로 뭔가를 할 수 ( 해결책 2의 ImageView는 여전히 이미지 뷰 iv2에 의해 정의 된 사각형에서 계속 듣고 있으며 솔루션 1 번은 NullPointException을 생성합니다! – greengold
모든 ImageView에 대해 수신기를 설정해야하며 onTouch() 메소드에서 v 매개 변수는 vi에 대한 참조입니다. 만졌던 것 –
나는 당신이 나의 질문을 얻지 않았다라고 생각한다. 내 물건 (이미지 뷰)을 내가 가볍게 두드리는 곳으로 옮기고 싶습니다. 물론 모든 이미지 뷰와 상호 작용하고 싶다면 onTouchListener를 할당하고 포커스를 이동 한 다음 onTouch 메서드에서 특정 뷰를 확인하여 이동해야하는 곳을 터치합니다. 문제는이 예제에서 RelativeLayout이 onTouchListener가 할당되어 있지 않아 원인을 알 수 없다는 것입니다. 따라서 좌표를 가져올 수 없습니다. – greengold