#android
#Android
Вопрос:
У меня есть небольшая программа, в которой у меня есть 2 изображения, прямо сейчас я выполняю события onTouch для каждого изображения, при нажатии на которое изображение сверху становится невидимым. Это работает нормально.. но наличие этого в основном действии становится запутанным..
Я создал testView, я хотел бы переместить код, который у меня есть в основном действии, в testView, но я не знаю, куда поместить события onTouch и как сделать то же самое оттуда?, Я не знаю, куда поместить события onTouch, а также как нарисовать ImageViews из моего testView.. когда я был в основной деятельности, они рисовали нормально.. но теперь .. я не знаю, как извлечь их из класса «testView extends View»… можете ли вы помочь мне организовать это?
public class TestView extends View{
public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public TestView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public TestView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
public class GameActivity extends Activity {
/** Called when the activity is first created. */
public int ColorId;
public boolean isUserTurn = false;
public int globalIndex = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myviewlay);
final ImageView image1= (ImageView)findViewById(R.id.ImageView03);
image1.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
try {
Thread.sleep(200);
ColorId = 1;
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
image1.setVisibility(View.INVISIBLE);
}
else
{
image1.setVisibility(View.VISIBLE);
}
//return super.onTouchEvent(event);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
});
final ImageView image2= (ImageView)findViewById(R.id.ImageView02);
image2.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
try {
Thread.sleep(200);
ColorId = 2;
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN){
image2.setVisibility(View.INVISIBLE);
}
else
{
image2.setVisibility(View.VISIBLE);
}
//return super.onTouchEvent(event);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
});
Я просто хочу знать, если я перенесу его в тестовое представление, как я могу реорганизовать его, чтобы он работал оттуда. Я очень новичок в Android…
Спасибо
Ответ №1:
Для событий onTouch вам просто нужно реализовать onTouchListener
на вашем TestView
компьютере. Если оба ImageViews находятся внутри вашего TestView
, вам нужна какая-то ViewGroup для создания макета вашего пользовательского представления. Если нет, вы просто расширяете ImageView вместо расширения View и помещаете свой пользовательский testView в XML-макет и вызываете setContentView(<your_layout>)
в своей деятельности.
Если недостаточно ясно, скажите что-нибудь: P
Надеюсь, это помогло, JQCorreia
Комментарии:
1. Спасибо, единственное, что неясно, это где мне разместить мои просмотры изображений с функциями onTouch, которые у меня есть в моей основной деятельности …? 🙁
2. Вы можете создать XML-макет с их помощью. Просто имейте в виду, что вы должны предоставить им полный путь к классу (например, <com.foo.package . MyImageView> например) при использовании пользовательских представлений в вашем макете. После этого в вашей деятельности просто позвоните
setContentView()
, как я говорил ранее 🙂