简单的播放界面

//

//  MoviePlayerView.m

//  Project1--Movie

//

//  Created by imac on 15/9/4.

//  Copyright (c) 2015年 Hong. All rights reserved.

//

#import "MoviePlayerView.h"

#import "UIView+ViewController.h"

@implementation MoviePlayerView

- (void)awakeFromNib{

//[super awakeFromNib];

_moviePlayer = [[MPMoviePlayerController alloc]initWithContentURL:nil];

//播放界面

_moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

//关闭子视图的自适应

// _moviePlayer.backgroundView.autoresizesSubviews = NO;

_moviePlayer.view.frame = self.bgView.bounds;

_moviePlayer.controlStyle = MPMovieControlStyleNone;

[_moviePlayer play];

[self.bgView insertSubview:_moviePlayer.view atIndex:0];

//    //创建音量滑动条

//    _volumnSlider = [[MPVolumeView alloc]initWithFrame:CGRectMake(-75.f, 150.f, 160.f, 30.f)];

//    //!!MPVolumnView只有在真机才显示

//    _volumnSlider.transform = CGAffineTransformMakeRotation(M_PI_2);

//    _volumnSlider.layer.anchorPoint = CGPointMake(0, 0);

//

//    [self.volumnView addSubview:_volumnSlider];

//自定义滑动条

_volumeSlider = [[UISlider alloc]initWithFrame:CGRectMake(-35.f, 50.f, 110.f, 30.f)];

_volumeSlider.transform = CGAffineTransformMakeRotation(-M_PI_2);

_volumeSlider.maximumValue = 10;

_volumeSlider.minimumValue = 0;

_volumeSlider.value = 0;

//音量条的滑块样式

[_volumeSlider setThumbImage:[UIImage imageNamed:@"point"] forState:UIControlStateNormal];

[_volumeView addSubview:_volumeSlider];

[_volumeSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];

//进度条上滑块样式

[_processSlider setThumbImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];

[_processSlider setThumbImage:[UIImage imageNamed:@"point"] forState:UIControlStateHighlighted];

//添加通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(duration) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(createProcessTimer) name:MPMoviePlayerNowPlayingMovieDidChangeNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinish) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

//如果没有URl就播放本地视频

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];

_moviePlayer.contentURL = [NSURL fileURLWithPath:filePath];

[_moviePlayer play];

//缩放按钮

[_zoomBtn setImage:[UIImage imageNamed:@"zoomin"] forState:UIControlStateNormal];

[_zoomBtn setImage:[UIImage imageNamed:@"zoomout"] forState:UIControlStateSelected];

//锁定按钮

[_lockBtn setTitle:@"Lock" forState:UIControlStateNormal];

[_lockBtn setTitle:@"Unlock" forState:UIControlStateSelected];

_leftTimeLabel.text = @"00:00:00";

}

#pragma mark--layoutSubviews

- (void)layoutSubviews{

//获取屏幕方向

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

if (orientation == UIInterfaceOrientationPortrait) {

self.bgView.size = CGSizeMake(kWidth, 250.f);

self.frame = self.bgView.bounds;

}else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight){

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

self.bgView.size = CGSizeMake(kWidth, kHeight);

}else{

self.bgView.size = CGSizeMake(kHeight, kHeight);

}

self.frame = self.bgView.bounds;

}else{

NSLog(@"test");

}

}

#pragma mark--Notification

- (void)duration{

//视频时长

_processSlider.maximumValue = _moviePlayer.duration;

_rightTimeLabel.text = [self calculateTime:_moviePlayer.duration];

}

- (void)createProcessTimer{

_processTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setProcess:) userInfo:nil repeats:YES];

}

- (void)movieFinish{

[_processTimer invalidate];

_processTimer = nil;

}

- (void)volumeChange:(UISlider *)slider{

//[MPMusicPlayerController applicationMusicPlayer].volume = slider.value;

}

//设置进度

- (void)setProcess:(NSTimer *)timer{

_second++;

self.leftTimeLabel.text = [self calculateTime:_second];

[_processSlider setValue:_second animated:YES];

}

- (NSString *)calculateTime:(NSTimeInterval)time{

//小时

int h = time / 3600;

int retain = (int)time % 3600;

//分钟

int m = retain / 60;

//秒

int s = retain % 60;

return [NSString stringWithFormat:@"%02d:%02d:%02d",h,m,s];

}

//- (void)setUrl:(NSString *)url{

//    _url = url;

//

//    if (url.length > 0) {

//        _moviePlayer.contentURL = [NSURL URLWithString:_url];

//        _moviePlayer.contentURL = [NSURL URLWithString:url];

//        [_moviePlayer play];

//

//    }else{

//        //如果没有URl就播放本地视频

//        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4"];

//        _moviePlayer.contentURL = [NSURL fileURLWithPath:filePath];

//        [_moviePlayer play];

//    }

//}

#pragma mark-Touch Method

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

self.upView.hidden = !self.upView.hidden;

self.volumeView.hidden = !self.volumeView.hidden;

self.bottomView.hidden = !self.bottomView.hidden;

}

- (IBAction)lockClick:(UIButton *)sender {

sender.selected = !sender.selected;

}

- (IBAction)playClick:(UIButton *)sender {

[_moviePlayer pause];

sender.selected = !sender.selected;

if (sender.selected) {

[sender setImage:[UIImage imageNamed:@"play"] forState:UIControlStateNormal];

[_moviePlayer pause];

[_processTimer invalidate];

_processTimer = nil;

}else{

[sender setImage:[UIImage imageNamed:@"pause"] forState:UIControlStateNormal];

[_moviePlayer play];

[self createProcessTimer];

}

}

//进度条滑动触发事件

- (IBAction)processChange:(UISlider *)sender {

self.leftTimeLabel.text = [self calculateTime:sender.value];

//调整播放进度

[_moviePlayer setCurrentPlaybackTime:sender.value];

}

- (IBAction)zoomClick:(UIButton *)sender {

sender.selected = !sender.selected;

if (sender.selected) {

//        self.bgView.transform = CGAffineTransformMakeRotation(-M_PI_2);

//self.bgView.origin = CGPointMake(0 , 300);

//self.bgView.transform = CGAffineTransformMakeScale(kHeight/self.bgView.size.width, kWidth/self.bgView.size.height);

//self.bgView.frame =[UIScreen mainScreen].bounds;

//        self.bgView.transform = CGAffineTransformMakeTranslation(0, (kHeight-_moviePlayer.view.size.height)/2);

//        self.viewController.view.backgroundColor = [UIColor blackColor];

}else{

//        self.bgView.transform = CGAffineTransformMakeTranslation(0, 0);

//        self.viewController.view.backgroundColor = [UIColor whiteColor];

}

}

- (IBAction)columeClick:(UIButton *)sender {

sender.selected = !sender.selected;

if (sender.selected) {

[sender setImage:[UIImage imageNamed:@"volume_mute"] forState:UIControlStateNormal];

_volumeSlider.value = 0;

}else{

[sender setImage:[UIImage imageNamed:@"volume.png"] forState:UIControlStateNormal];

}

}

@end

时间: 2024-12-28 06:00:29

简单的播放界面的相关文章

谷歌眼镜Mirror app简单MP3播放器界面

虽然我知道,Mirror是不可以播放音视频的 = =!,不过只是做个UI而已,有用的可以参考下-(背景:歌手|标题:歌名|中间:歌词[蓝色显示目前]|底部:时间[黄色显示播放时间]) 效果图: 代码: 1 <article> 2 <img src="http://img2.imgtn.bdimg.com/it/u=394713825,2736623939&fm=23&gp=0.jpg" width="100%"> 3 <

Android开发6:Service的使用(简单音乐播放器的实现)

前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service 进行后台工作, 学会使用 Service 与 Activity 进行通信,并在此知识基础上学会使用 MediaPlayer和简单的多线程编程.使用 Handle 更新 UI,并设计成功一个简单的音乐播放器. 是不是很高大上呢~一起来学习~ 基础知识 Service作为Android四大组件之一,在每

Android开发---MediaPlayer简单音乐播放器

Android开发-MediaPlayer简单音乐播放器 功能介绍 实现一个简单的播放器,类似网易云音乐形式,功能包括: 播放.暂停,停止,退出功能: 后台播放功能: 进度条显示播放进度.拖动进度条改变进度功能: 播放时图片旋转,显示当前播放时间功能: 界面样式 功能实现 1. MediaPlayer的实现 MediaPlayer常用方法介绍 MediaPlayer的实现包括初始化MediaPlayer,MediaPlayer的功能实现,包括播放.暂停.停止.离开等,具体细节如下: MediaP

Android开发本地及网络Mp3音乐播放器(六)实现独立音乐播放界面

实现功能: 功能1:点击MyMusicListFragment(本地音乐)底部UI中的专辑封面图片打开的PlayActivity(独立音乐播放界面) PlayActivity中,显示正在播放的歌名 PlayActivity中,显示专辑封面图片(大图) PlayActivity中,显示上一首按钮,实现对应功能 PlayActivity中,显示暂停播放按钮,实现对应功能 PlayActivity中,显示下一首,实现对应功能 功能2:实现同步MyMusicListFragment(本地音乐界面)和Pl

Android Service AIDL 远程调用服务 简单音乐播放实例的实现

Android Service是分为两种: 本地服务(Local Service): 同一个apk内被调用 远程服务(Remote Service):被另一个apk调用 远程服务需要借助AIDL来完成. AIDL 是什么 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.如果在一个进程中(例如Activi

Android开发本地及网络Mp3音乐播放器(十)最近播放界面与数据保存更新

实现功能: 实现MyLoveMusicActivity(音乐收藏界面) 实现MyRecordMusicActivity(最近播放界面) 实现MyMusicListFragment(本地音乐界面)ItemClick事件发生后,切换到PlayActivity(独立音乐播放界面)只播放 本地音乐. 实现MyLoveMusicActivity(音乐收藏界面)ItemClick事件发生后,切换到PlayActivity(独立音乐播放界面)只播放 音乐收藏. 实现MyRecordMusicActivity(

可视化程序设计基础(三)——一个简单的播放器(并不)

本次的作业是制作一个简单的播放器,功能仅限于播放视频和音频,虽说是简单的播放器,但其中还是有很多细节需要注意的. 问题一:布局 本来这个问题不应该是一个问题了,之前老师讲过的Stackpanel和Grid等对于布局一个播放器来说绰绰有余,但上次上课老师提到的NavigationView令我十分感兴趣,这是一个uwp应用程序中随处可见的一种布局,节省了开发者很多的时间. 所以我就着手于建立这个NavigationView了,首先我看了一下XAML Controls Gallery,然而其中关于Na

软件工程之Spring音乐播放界面C#编写细节

由于小组成员已经完成软件的详细设计说明书,在这里只具体说明软件程序的细节编写,以免重复. 歌曲的播放采用VS自带的axWindowsMediaPlayer插件,所以程序中涉及到许多该插件的使用.Ctlcontrols属性是AxWindowsMediaPlayer的一个重要属性, 此控件中有许多常用成员.下面是常用的几个,除了4和5在该音乐播放器中不需要用到,其他几个方法均需要. (1) 方法play 用于播放多媒体文件,其格式为:窗体名.控件名.Ctlcontrols.play() 如: AxW

ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局

本文转自 :http://www.cnblogs.com/wendingding/p/3761730.html ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局 一.实现效果 二.使用纯代码自定义一个tableview的步骤 1.新建一个继承自UITableViewCell的类 2.重写initWithStyle:reuseIdentifier:方法 添加所有需要显示的子控件(不需要设置子控件的数据和frame,  子控件要添加到contentView中