当前位置: 首页 > news >正文

大学网站开发深圳光明区

大学网站开发,深圳光明区,免费制作手机网站,网站推广的方法及特点请实现一个自定义 View 的核心代码,核心要求可以响应如下事件: // - 要求自定义 View 可以播放一段视频 / - 在 view 左侧区域上下滑动,可以提高减少音量 / / - 在 view 右侧区域上下滑动可以提高减少屏幕亮度 // - 在 view 左右滑动可以…

请实现一个自定义 View 的核心代码,核心要求可以响应如下事件:

// - 要求自定义 View 可以播放一段视频

/ - 在 view 左侧区域上下滑动,可以提高减少音量 /

/ - 在 view 右侧区域上下滑动可以提高减少屏幕亮度

// - 在 view 左右滑动可以快进/快退播放 // - 在 view 区域点击屏幕可以暂停/继续播放

 使用 VideoView 实现自定义 View

public class CustomVideoView extends FrameLayout {private VideoView videoView;private GestureDetector gestureDetector;private float initialTouchX, initialTouchY;private int screenWidth, screenHeight;private AudioManager audioManager;private WindowManager.LayoutParams layoutParams;private float maxVolume;public CustomVideoView(Context context) {super(context);init(context);}public CustomVideoView(Context context, AttributeSet attrs) {super(context, attrs);init(context);}public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init(context);}private void init(Context context) {// 初始化 VideoViewvideoView = new VideoView(context);addView(videoView, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));// 获取屏幕宽高WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();Point size = new Point();display.getSize(size);screenWidth = size.x;screenHeight = size.y;// 初始化音频管理器audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);// 获取当前窗口参数以调整亮度layoutParams = ((Activity) context).getWindow().getAttributes();// 初始化手势检测器gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {@Overridepublic boolean onSingleTapConfirmed(MotionEvent e) {if (videoView.isPlaying()) {videoView.pause();} else {videoView.start();}return true;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {float deltaX = e2.getX() - initialTouchX;float deltaY = e2.getY() - initialTouchY;if (Math.abs(deltaX) > Math.abs(deltaY)) {// 左右滑动快进/快退if (deltaX > 0) {// 快进videoView.seekTo(videoView.getCurrentPosition() + 10000);} else {// 快退videoView.seekTo(videoView.getCurrentPosition() - 10000);}} else {if (initialTouchX < screenWidth / 2) {// 左侧区域,上下滑动调整音量if (deltaY > 0) {// 降低音量audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0);} else {// 提高音量audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0);}} else {// 右侧区域,上下滑动调整亮度if (deltaY > 0) {// 降低亮度layoutParams.screenBrightness = Math.max(layoutParams.screenBrightness - 0.1f, 0.1f);} else {// 提高亮度layoutParams.screenBrightness = Math.min(layoutParams.screenBrightness + 0.1f, 1.0f);}((Activity) getContext()).getWindow().setAttributes(layoutParams);}}return true;}});}@Overridepublic boolean onTouchEvent(MotionEvent event) {initialTouchX = event.getX();initialTouchY = event.getY();return gestureDetector.onTouchEvent(event);}public void setVideoPath(String path) {videoView.setVideoPath(path);}public void start() {videoView.start();}public void pause() {videoView.pause();}public boolean isPlaying() {return videoView.isPlaying();}public void seekTo(int millis) {videoView.seekTo(millis);}
}

GestureDetector.SimpleOnGestureListener 是 GestureDetector 的一个内部类,提供了各种手势检测回调方法。你可以通过继承 SimpleOnGestureListener 并重写它的方法来定制手势处理逻辑。下面是 SimpleOnGestureListener 内常用方法的详细说明及示例代码。

常用方法及说明

  1. onSingleTapUp(MotionEvent e)

    • 当用户轻轻点击屏幕后松开时调用。
    • 返回 true 表示该事件被处理。
    • 示例用途:处理单击事件。
  2. onLongPress(MotionEvent e)

    • 当用户长按屏幕时调用。
    • 示例用途:处理长按事件,如显示上下文菜单。
  3. onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)

    • 当用户在屏幕上滑动时调用。
    • 参数 e1 表示滑动的起点,e2 表示滑动的终点,distanceX 和 distanceY 分别表示滑动的距离。
    • 示例用途:处理滚动事件,如滚动列表。
  4. onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)

    • 当用户快速滑动并松开时调用。
    • 参数 e1 和 e2 表示滑动的起点和终点,velocityX 和 velocityY 分别表示滑动的速度。
    • 示例用途:处理快速滑动事件,如切换页面。
  5. onShowPress(MotionEvent e)

    • 当用户按下屏幕但还未松开或拖动时调用。
    • 示例用途:处理按压显示效果。
  6. onDown(MotionEvent e)

    • 当用户按下屏幕时调用。
    • 返回 true 表示该事件被处理。
    • 示例用途:通常用来初始化一些状态。
  7. onDoubleTap(MotionEvent e)

    • 当用户双击屏幕时调用。
    • 示例用途:处理双击事件,如放大图片。
  8. onDoubleTapEvent(MotionEvent e)

    • 当双击手势发生的过程中,按下、移动和抬起事件的任何一次调用。
    • 示例用途:处理双击过程中的事件。
  9. onSingleTapConfirmed(MotionEvent e)

    • 当单击事件被确认时调用。
    • 示例用途:与 onSingleTapUp 区分,onSingleTapConfirmed 在确定不是双击时调用。
http://www.yayakq.cn/news/775842/

相关文章:

  • 服务器网站维护做网站吉林
  • 茶文化网站开发在建设网站入账
  • 免费申请网站永久wordpress函数大全
  • 有什么国外的设计网站推荐苏州网络推广公司网站建设
  • 个人建设网站流程seochinazcom
  • 免费做数学题的网站怎么做外国网站
  • 厦门网站建设网站wordpress登陆后跳转页面
  • 网站对联广告wordpress网站转移
  • 成都网站制作实力乐云seo网站建设与维护就业怎么样
  • 阜南网站建设公司电子政务网站代码
  • 国内高端品牌网站建设泰安外贸网站建设公司
  • 进入官方网站wordpress 安全吗
  • 网站建设链接演示帮老板做网站
  • 烟台h5网站制作如何用易语言做网站
  • 官方网站建设哪儿有深圳 网站科技
  • 渭南网站建设哪里便宜网上购物有哪些网站?
  • 网站开发环境 对比wordpress是全开源吗
  • 马大姐网站建设目的logo制作软件哪个好
  • 代理网站平台北京中联建设集团官网网站
  • 如何修改公司网站重庆论坛网站建设
  • 国内做免费视频网站有哪些精选网站建立 推广 优化
  • 正常网站 月均ip pv手机微信营销软件
  • 网站要钱怎么网站导航上的图片做多大尺寸
  • 刷会员网站怎么做华龙建设部网站查不到
  • 空调维修自己做网站推广产品的方法和步骤
  • 网站版面结构网站建设一般多少钱
  • 网站路径301重定向怎么做网站建设费用明细表
  • 谷歌广告优化师青岛网站seo
  • 资源下载网站建设重庆市建设工程造价信息网公众号
  • 关于网站建设方面的文章流量对于网站盈利