layout文件:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hanqi.musicplay.MainActivity"
android:orientation="vertical"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="播放状态:未播放"
android:id="@+id/tv_1"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pb_1"
style="@android:style/Widget.ProgressBar.Horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="play_onClick"
android:text="播放"
android:background="@drawable/a4"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="pause_onClick"
android:text="暂停"
android:background="@drawable/a4"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="stop_onClick"
android:text="停止"
android:background="@drawable/a4"/>
<!--<Button-->
<!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"-->
<!--android:onClick="exit_onClick"-->
<!--android:text="退出"/>-->
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_2"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/iv_1"/>
</LinearLayout>

activity_main

java类:

 package com.hanqi.musicplay;

 import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView; public class MainActivity extends AppCompatActivity { ProgressBar pb_1;
TextView tv_1;
MediaPlayer mediaPlayer;
ImageView iv_1;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb_1 = (ProgressBar)findViewById(R.id.pb_1);
tv_1 = (TextView)findViewById(R.id.tv_1);
iv_1 = (ImageView)findViewById(R.id.iv_1); final int[]iv = {R.drawable.b11,R.drawable.b21,R.drawable.b3,R.drawable.b41};
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
iv_1.setImageResource(iv[msg.arg1]);
}
};
//图片轮播 在分线程
new Thread(new Runnable() {
@Override
public void run() { for (int i = 0;i<iv.length;i++)
{
//iv_1.setImageResource(iv[i]);
Message message = new Message();
message.what = 0;
message.arg1 = i;
handler.sendMessage(message);
try {
Thread.sleep(2000);
}
catch (Exception e)
{ }
if (i == iv.length-1)i=-1;
}
}
}).start(); }
//播放
public void play_onClick(View v)
{
//构造mediaPlayer
if (mediaPlayer == null)
{
//用静态方法构造
mediaPlayer = MediaPlayer.create(this,R.raw.test);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
tv_1.setText("播放状态:播放完成");
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}
});
//设置进度条的最大长度
pb_1.setMax(mediaPlayer.getDuration());
//启动分线程
new Thread(){
@Override
public void run() {
//循环条件
while (mediaPlayer != null)
{
//更新进度
//设置当前进度值:和播放器的当前进度有关
pb_1.setProgress(mediaPlayer.getCurrentPosition());
try {
Thread.sleep(500);
}
catch (Exception e)
{ }
}
}
}.start();
}
mediaPlayer.start();
tv_1.setText("播放状态:正在播放");
}
//停止
public void stop_onClick(View v)
{
if (mediaPlayer != null)
{
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
pb_1.setProgress(0);
tv_1.setText("播放状态:停止播放");
}
}
//暂停
public void pause_onClick(View v)
{
if (mediaPlayer != null && mediaPlayer.isPlaying())
{
mediaPlayer.pause();
tv_1.setText("播放状态:暂停播放");
} }
//退出
// public void exit_onClick(View v)
// {
// stop_onClick(v);
// finish();
// }
}

MainActivity

效果为:

Android——播放器和图片轮播的更多相关文章

  1. Android学习笔记之图片轮播...

    PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...

  2. Android高级图片滚动控件,编写3D版的图片轮播器

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博 ...

  3. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  4. Android 开发最牛的图片轮播控件,基本什么都包含了。

    Android图片轮播控件  源码下载地址: Android 图片轮播 现在的绝大数app都有banner界面,实现循环播放多个广告图片和手动滑动循环等功能.因为ViewPager并不支持循环翻页, ...

  5. Android中使用开源框架android-image-indicator实现图片轮播部署

    之前的博文中有介绍关于图片轮播的实现方式,分别为(含超链接): 1.<Android中使用ViewFlipper实现屏幕切换> 2.<Android中使用ViewPager实现屏幕页 ...

  6. Android图片轮播控件

    Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式.动画.轮播和切换时间.位置.图片加载框架等! 使用步骤 Step 1.依赖banner Gradle dependenci ...

  7. Android——图片轮播

    Android技术——轮播功能 轮播需要什么? 答:实现图片与广告语展示.循环播发以及手动切换.支持加载本地与网络图片. 性能优化? 答:多张图片与指示器展示.自动与定时.循环播发.滑动流畅并且无卡顿 ...

  8. Android开发(九)——ViewFlipper实现图片轮播

    图片轮播的实现方法有很多,主要有View.ViewFilpper.ViewFilpper系统自带的一个多页面管理控件,它可以实现子界面的自动切换. 首先 需要为ViewFlipper加入View (1 ...

  9. 推荐一款超级漂亮的HTML5 CSS3的图片轮播器

    最近在学习HTML5和CSS3,印象最深的是CSS3的动画功能,不仅有浏览器原生支持,执行效率高,而且免去在js中自己管理timer. 本来想写一个图片轮播器练练手,结果在网上发现一个国人写的开源的图 ...

随机推荐

  1. JAVA 中文转GBK内码方法

    不能谷歌,百度了很久,没有直接的转换方法,参考 byte[]数组与十六进制字符串与字符串的互相转换 http://blog.163.com/roadwalker@126/blog/static/113 ...

  2. 杭电ACM1004

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. sysctl.conf网络内核参数说明(转)

    下面是我的理解,可能有误,仅供参考. 要调优,三次/四次握手必须烂熟于心. client                  server(SYN_SENT)      —>  (SYN_RECV ...

  4. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  5. JAVA抽象类与接口的详细解读与示例

    接口存在的原因: JAVA是单继承的,不支持多继承,但是有了接口,JAVA可以实现多个接口: 一个类要是实现某一个接口就必须实现接口内声明的所有方法(强迫执行,即便是空方法,也要实现): 接口特点: ...

  6. GridView在ScrollView中实现在家更多

    这个本身会有bug  应该在滑动监听中作出判断的 <?xml version="1.0" encoding="utf-8"?><Relativ ...

  7. C语言程序设计第7堂作业

         一.本次课主要内容: 本次以计算圆柱体体积为例,通过定义体积计算功能的函数和主函数调用的例子,引出函数定义的一般形式:函数首部加函数体,且在函数结尾处通过return 语句返回结果.本节要重 ...

  8. unix basic command

    1. get start Command Example Description ls ls ls -a ls -l 输出目录文件 输出文件包括隐藏文件 输出文件详细信息 pwd pwd show p ...

  9. Apriori——python3实现

    最近看了关联算法中的Apriori没看懂,这次看了一些论文总算看懂了,不过还是没能够自己实现.在github搜到一些代码看,看的不很懂,这里先贴上(当中有自己加的注释),有时间再补充研究. # -*- ...

  10. 《HP大规模敏捷开发实践》读书笔记

    读这本书的心得,敏捷是实践出来的,哪怕不懂srcum**等方法,只要坚持心中的价值观,朝一个方向改进,哪怕不能“任何时候都拥有符合发布要求的代码”,今天比昨天好,也是成功.     通过业务分析确定开 ...