В настоящее время я работаю над проектом, в котором я использую веб-представление, упакованное в RelativeLayout, и разместил ImageButton в левом нижнем углу:
<RelativeLayout
android:id="@+id/relativeLayout_maincontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
/>
<ImageButton
android:id="@+id/imageButton_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="2dp"
android:src="@android:drawable/ic_menu_call" />
</RelativeLayout>
Это прекрасно работает.Следующим шагом, о котором я подумал, является то, что кнопка может иногда мешать моим пользователям, когда они не видят, что находится за кнопкой ... Поэтому я попытался скрыть кнопку через несколько секунд и когда пользователь прокручивает / касается/ или что-то еще (просто некоторый пользовательский ввод) я покажу его, и через несколько секунд кнопка снова исчезнет.Как и кнопки увеличения и уменьшения в веб-просмотре.Лучший способ - использовать те же функции, что и у этих кнопок масштабирования, но я не смог найти способ сделать это.Я создал функцию, основанную на знании Как показать представление в течение 3 секунд, а затем скрыть его? :
private void startCallButtonHidingThread() {
Thread thread = new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
runOnUiThread(new Runnable() {
@Override
public void run() {
callButton.setVisibility(ImageButton.GONE);
}
});
}
};
thread.start();
}
Это прекрасно работает.Следующим шагом было отображение кнопки, когда пользовательский ввод происходит, поэтому я попробовал что-то вроде этого:
relativeLayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(callButton.getVisibility() == ImageButton.GONE) callButton.setVisibility(ImageButton.VISIBLE);
startCallButtonHidingThread();
return false;
}
});
или что:
relativeLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(callButton.getVisibility() == ImageButton.GONE) callButton.setVisibility(ImageButton.VISIBLE);
startCallButtonHidingThread();
}
});
и то же самое, что я попробовал в веб-просмотре.Большую часть времени это работает только один раз, а затем вообще никакой реакции.
Так что, если у вас есть идея или лучшее решение, пожалуйста, дайте мне знать.Я очень ценю вашу помощь!