问题描述
我已经在我的activity上实现了onTouchEvent。现在我遇到了一个问题。对于非常轻扫的方向,它只是检测到MotionEvent.ACTION_MOVE,例如,当我从上至下或从下至上滑动手指时,或者在任何方向上,它都将其检测为MotionEvent.ACTION_MOVE。有人可以帮我解决这个问题吗? 这是我的活动xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:show_buffering="when_playing" />
<ImageView
android:id="@+id/imgChannellogo"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center|center_vertical"
android:visibility="invisible" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/brightness_slider_container"
android:gravity="center"
android:layout_marginTop="100dp"
android:layout_marginBottom="100dp"
android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hplib_brightness_medium"
android:id="@+id/brightnessIcon"/>
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="10dp"
android:layout_height="match_parent"
android:max="100"
android:progress="33"
android:id="@+id/brightness_slider"
android:progressDrawable="@drawable/hplib_verticalbar_design_brightness"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:layout_marginRight="0dp"
android:layout_marginBottom="0dp"
android:visibility="visible" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/brightness_center_text"
android:gravity="center"
android:visibility="gone"
android:layout_centerHorizontal="true" >
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/brightness_image"
android:src="@drawable/hplib_brightness_minimum" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 22"
android:textSize="50dp"
android:textStyle="bold"
android:id="@+id/brigtness_perc_center_text"
android:textColor="#FFF" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/volume_slider_container"
android:gravity="center"
android:layout_marginTop="100dp"
android:layout_marginBottom="100dp"
android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/hplib_volume"
android:id="@+id/volIcon"/>
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="10dp"
android:layout_height="match_parent"
android:max="100"
android:progress="33"
android:id="@+id/volume_slider"
android:progressDrawable="@drawable/hplib_verticalbar_design_volume"
android:layout_marginRight="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
android:visibility="visible" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/vol_center_text"
android:layout_gravity="center"
android:gravity="center"
android:visibility="gone"
>
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/vol_image"
android:src="@drawable/hplib_volume" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 22"
android:textSize="50dp"
android:textStyle="bold"
android:id="@+id/vol_perc_center_text"
android:textColor="#FFF" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutRunRadioInBackground"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_gravity="bottom"
android:layout_marginBottom="80dp"
android:gravity="center"
android:visibility="invisible">
<androidx.cardview.widget.CardView
android:id="@+id/btnRunRadioInBackground"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
app:cardBackgroundColor="@color/ui_yellow"
app:cardCornerRadius="25dp">
</androidx.cardview.widget.CardView>
</LinearLayout>
<com.google.android.gms.ads.AdView
android:layout_gravity="bottom|center"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
</com.google.android.gms.ads.AdView>
这里是我的活动中的onTouchEvent方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Log.i("tag check","paien shodim");
tested_ok=false;
if (event.getX() < (sWidth / 2)) {
intLeft = true;
intRight = false;
} else if (event.getX() > (sWidth / 2)) {
intLeft = false;
intRight = true;
}
int upperLimit = (sHeight / 4) + 100;
int lowerLimit = ((sHeight / 4) * 3) - 150;
if (event.getY() < upperLimit) {
intBottom = false;
intTop = true;
} else if (event.getY() > lowerLimit) {
intBottom = true;
intTop = false;
} else {
intBottom = false;
intTop = false;
}
seekSpeed = (TimeUnit.MILLISECONDS.toSeconds(player.getDuration()) * 0.1);
diffX = 0;
calculatedTime = 0;
seekDur = String.format("%02d:%02d",TimeUnit.MILLISECONDS.toMinutes(diffX) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(diffX)),TimeUnit.MILLISECONDS.toSeconds(diffX) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(diffX)));
//TOUCH STARTED
baseX = event.getX();
baseY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
Log.i("tag check","move shodim");
screen_swipe_move=true;
if(controlsstate==ControlsMode.FULLCONTORLS){
//root.setVisibility(View.GONE);
diffX = (long) (Math.ceil(event.getX() - baseX));
diffY = (long) Math.ceil(event.getY() - baseY);
double brightnessspeed = 0.05;
if (Math.abs(diffY) > MIN_disTANCE) {
tested_ok = true;
}
if (Math.abs(diffY) > Math.abs(diffX)) {
if (intLeft) {
cResolver = getContentResolver();
window = getwindow();
try {
Settings.System.putInt(cResolver,Settings.System.SCREEN_BRIGHTnesS_MODE,Settings.System.SCREEN_BRIGHTnesS_MODE_MANUAL);
brightness = Settings.System.getInt(cResolver,Settings.System.SCREEN_BRIGHTnesS);
} catch (Settings.SettingNotFoundException e) {
e.printstacktrace();
}
int new_brightness = (int) (brightness - (diffY * brightnessspeed));
if (new_brightness > 250) {
new_brightness = 250;
} else if (new_brightness < 1) {
new_brightness = 1;
}
double brightPerc = Math.ceil((((double) new_brightness / (double) 250) * (double) 100));
brightnessBarContainer.setVisibility(View.VISIBLE);
brightness_center_text.setVisibility(View.VISIBLE);
brightnessBar.setProgress((int) brightPerc);
if (brightPerc < 30) {
brightnessIcon.setimageResource(R.drawable.hplib_brightness_minimum);
brightness_image.setimageResource(R.drawable.hplib_brightness_minimum);
} else if (brightPerc > 30 && brightPerc < 80) {
brightnessIcon.setimageResource(R.drawable.hplib_brightness_medium);
brightness_image.setimageResource(R.drawable.hplib_brightness_medium);
} else if (brightPerc > 80) {
brightnessIcon.setimageResource(R.drawable.hplib_brightness_maximum);
brightness_image.setimageResource(R.drawable.hplib_brightness_maximum);
}
brigtness_perc_center_text.setText(" " + (int) brightPerc);
Settings.System.putInt(cResolver,Settings.System.SCREEN_BRIGHTnesS,(new_brightness));
WindowManager.LayoutParams layoutpars = window.getAttributes();
layoutpars.screenBrightness = brightness / (float) 255;
window.setAttributes(layoutpars);
}else if (intRight) {
vol_center_text.setVisibility(View.VISIBLE);
mediavolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxVol = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
double cal = (double) diffY * ((double)maxVol/(double)(device_height*4));
int newMediaVolume = mediavolume - (int) cal;
if (newMediaVolume > maxVol) {
newMediaVolume = maxVol;
} else if (newMediaVolume < 1) {
newMediaVolume = 0;
}
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,newMediaVolume,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
double volPerc = Math.ceil((((double) newMediaVolume / (double) maxVol) * (double) 100));
vol_perc_center_text.setText(" " + (int) volPerc);
if (volPerc < 1) {
volIcon.setimageResource(R.drawable.hplib_volume_mute);
vol_image.setimageResource(R.drawable.hplib_volume_mute);
vol_perc_center_text.setVisibility(View.GONE);
} else if (volPerc >= 1) {
volIcon.setimageResource(R.drawable.hplib_volume);
vol_image.setimageResource(R.drawable.hplib_volume);
vol_perc_center_text.setVisibility(View.VISIBLE);
}
volumeBarContainer.setVisibility(View.VISIBLE);
volumeBar.setProgress((int) volPerc);
}
}else if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > (MIN_disTANCE + 100)) {
tested_ok = true;
// root.setVisibility(View.VISIBLE);
//seekBar_center_text.setVisibility(View.VISIBLE);
// onLyseekbar.setVisibility(View.VISIBLE);
// top_controls.setVisibility(View.GONE);
//bottom_controls.setVisibility(View.GONE);
String totime = "";
calculatedTime = (int) ((diffX) * seekSpeed);
if (calculatedTime > 0) {
seekDur = String.format("[ +%02d:%02d ]",TimeUnit.MILLISECONDS.toMinutes(calculatedTime) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(calculatedTime)),TimeUnit.MILLISECONDS.toSeconds(calculatedTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(calculatedTime)));
} else if (calculatedTime < 0) {
seekDur = String.format("[ -%02d:%02d ]",Math.abs(TimeUnit.MILLISECONDS.toMinutes(calculatedTime) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(calculatedTime))),Math.abs(TimeUnit.MILLISECONDS.toSeconds(calculatedTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(calculatedTime))));
}
totime = String.format("%02d:%02d",TimeUnit.MILLISECONDS.toMinutes(player.getCurrentPosition() + (calculatedTime)) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(player.getCurrentPosition() + (calculatedTime))),// The change is in this line
TimeUnit.MILLISECONDS.toSeconds(player.getCurrentPosition() + (calculatedTime)) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(player.getCurrentPosition() + (calculatedTime))));
txt_seek_secs.setText(seekDur);
txt_seek_currTime.setText(totime);
// seekBar.setProgress((int) (player.getCurrentPosition() + (calculatedTime)));
}
}
}
break;
case MotionEvent.ACTION_CANCEL:
Log.i("tag check","cancel shodim");
case MotionEvent.ACTION_UP:
Log.i("tag check","up shodim");
screen_swipe_move=false;
tested_ok = false;
//seekBar_center_text.setVisibility(View.GONE);
brightness_center_text.setVisibility(View.GONE);
vol_center_text.setVisibility(View.GONE);
brightnessBarContainer.setVisibility(View.GONE);
volumeBarContainer.setVisibility(View.GONE);
// onLyseekbar.setVisibility(View.VISIBLE);
//top_controls.setVisibility(View.VISIBLE);
// bottom_controls.setVisibility(View.VISIBLE);
// root.setVisibility(View.VISIBLE);
calculatedTime = (int) (player.getCurrentPosition() + (calculatedTime));
player.seekTo(calculatedTime);
// showControls();
break;
}
return super.onTouchEvent(event);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)