当前位置:  编程技术>移动开发
本页文章导读:
    ▪资料浏览 & 视频播放器        文件浏览 & 视频播放器 带文件浏览的视频播放器   普通的视频播放器没什么特别的 所以今天加料 其带有文件浏览功能 即 windowXP 播放器带有的浏览功能 然后选择要播放的文件 再返回播.........
    ▪ 怎么简单创建Menu(菜单)        如何简单创建Menu(菜单) MenuMain为主程序,MenuMainScreen是对我们程序界面的设置。 下面我们来看一下代码: MenuMain: import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.component.LabelField.........
    ▪ PreferenceScreen 失去CheckBoxPreference       PreferenceScreen 得到CheckBoxPreference final ListAdapter adapter = getPreferenceScreen().getRootAdapter(); for (int idx = 0; idx < adapter.getCount(); idx++) {     Object object = adapter.getItem(idx);     if(object instanceof CheckBoxPre.........

[1]资料浏览 & 视频播放器
    来源: 互联网  发布时间: 2014-02-18
文件浏览 & 视频播放器

带文件浏览的视频播放器

 

普通的视频播放器没什么特别的 所以今天加料 其带有文件浏览功能 即 windowXP 播放器带有的浏览功能 然后选择要播放的文件 再返回播放器中播放目标

 

windowsXP 行为 参考如下截图:

 

 

[功能]

1. 文件浏览器

2. 视频播放器

 

 

 

[代码 步骤]

1. 构建界面

写道
1 VideoView 用于视频播放
2 Button 一个用于播放控制(暂停/继续)  另一个用于文件浏览
1 TextView 用于显示指定目标文件和目录

  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<VideoView  
	android:id="@+id/video"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
<Button  
	android:id="@+id/cmd"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:text="播放"
    />
<Button  
	android:id="@+id/button"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:text="浏览"
    />
</LinearLayout>
</LinearLayout>

 

 

 

2. VideoView 的一些方法

//1. 定义
VideoView vp;

//2.初始化
vp = (VideoView) findViewById(R.id.video);

//3. 暂停
vp.pause();

//4. 继续播放
vp.start();

//5. 判断是否正在播放
vp.isPlaying()

 

 

3. 让一个Button 既有播放功能 又又暂停功能

findViewById(R.id.cmd).setOnClickListener(new OnClickListener(){
   public void onClick(View v) {
    // TODO Auto-generated method stub
    if(vp.isPlaying()){
     vp.pause();
     
     cmd.setText("播放");
    }
    else {
     vp.start();
     
     cmd.setText("暂停");
    }
   }
        });

 

 

 

4. 按下"Browse" Button 去浏览文件 并返回目标的文件与目录 且传入要检索文件的类型 本例为:*.3gp 并标记其为:FILE_QUERY_ACTIVITY 便于返回供确定所用

public void sendGo(){
    	Intent i = new Intent(this, FileQuery.class);
    	
    	Bundle b = new Bundle();
    	b.putString("format", ".3gp");
    	
    	i.putExtras(b);
    	
		startActivityForResult(i,FILE_QUERY_ACTIVITY);
    }


findViewById(R.id.button).setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//vp.pause();

				sendGo();
			}
        });

 

 

5. 在onActivityResult()捕捉返回的目标 然后播放之

public void playVideo(String s){
    	Uri u = Uri.parse(s);
    	vp.setVideoURI(u);
        vp.start();
        
        cmd.setText("暂停");
    }


@Override
    protected void onActivityResult(int requestCode, int resultCode,
                                   Intent data){
    	switch (resultCode){
    	case FILE_QUERY_ACTIVITY:
    		Bundle b = data.getExtras();
    		
    		String string = b.getString(FILE_QUERY);
    		
    		playVideo(string);
    		
    	}
    	
    }

 

 

 

以上是与播放有关的功能 下面说文件浏览有关的功能

 

1.  定义布局: file.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout 
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    >
<Button
	android:id="@+id/previous"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="后退 "
    android:gravity="right"
    />
 <TextView
	android:id="@+id/path"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true"
    />
</LinearLayout>
<ListView
	android:id="@+id/list"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

 

 

2. 定义变量fileType 用于保存VideoView 传来的文件类型 并定义2个String 用于存放目标目录及其上级目录

//定义
String fileType = "";


//匹配检测
public void getType(Intent i){
    	Bundle b = i.getExtras();
    	
    	fileType = b.getString("format");;
    	
    }


//调用 刚进入文件浏览时调用
getType(this.getIntent());
//存放目标目录
String target="";

//存放目标目录的上级目录
String parent="";

  

 

 

3. 列出目标目录下的所有文件/目录

//检测目标是否应该列出 条件:
1. 子目录
2. 文件 且 类型匹配
public boolean isType(String s){
    	if(s.contains(fileType)){
    		return true;
    	}
    	else {
    		return false;
    	}
    }

public List<Map<String,String>> list(String s){
    	List<Map<String,String>> result = new ArrayList<Map<String, String>>();
    	
    	File file = new File(s);
    	
    	File[] list= file.listFiles();
    	
    	for( File f : list ){
        	
    		if(isType(f.getName())||f.isDirectory()){
    			Map<String,String> map =new HashMap<String, String>();
    			
    			map.put(FILE_NAME, f.getName().toString());
    			
    			if(f.isFile()){
    				map.put(FILE_TYPE, FILE_TYPE_FILE);
    			}
    			else if(f.isDirectory()){
    				map.put(FILE_TYPE, FILE_TYPE_DIRECTORY);
    			}
        	
    			result.add(map);
    		}
        }
    	
    	path.setText(target);
    	return result;
    	
    }

 

 

4. 得到目标目录的子目录 当该子目录也是目录时 列出该子目录下的所有文件/目录 当该子目录为文件时 表示找到了目标 返回之 如何注册:点击ListView中的具体item 就像windowXP 的一样

list.setOnItemClickListener(new OnItemClickListener(){
    		@Override
    		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			// TODO Auto-generated method stub
    			String s = value.get((int)arg3).get("name");
    			
    			value = getNextList(s);
    			
    			adapter.notifyDataSetChanged();
    			
    		}
            });


public List<Map<String,String>> getNextList(String s){
    	String string = updateNext(s);
    	
    	if(isFile(string)){
    		
    		replyQuery(string);
    		
    		string = updatePrevious();
    	}
    	
    	return list(string);
    }


public String updateNext(String s){
    	parent = target;
    	target += "/" + s;
    	
    	return target;
    }






 

 

5. 返回目标目录的上级目录 并显示其所有文件/目录 如何注册: Button id=R.id.previous

previous.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				// TODO Auto-generated method stub
				value = getPreviousList();
				
				adapter.notifyDataSetChanged();
			}
        });


public List<Map<String,String>> getPreviousList(){
    	String string = updatePrevious();
    	
    	return list(string);
    }


public String updatePrevious(){
    	target = parent;
    	
    	File file = new File(parent);
    	parent = file.getParent();
    	
    	return target;
    }

 

 

 

6. emulator 的运行截图:

* 整体布局:

 

* 文件选择:

 

* 播放界面

1 楼 mj4678 2010-09-09  
请问有源码么,发一份学习下我自己写的播放只有声音没有画面dir4678@tom.com
2 楼 peter_ims 2010-10-18  
谢谢啦。发个贴真不容易,还要测试。

    
[2] 怎么简单创建Menu(菜单)
    来源: 互联网  发布时间: 2014-02-18
如何简单创建Menu(菜单)

MenuMain为主程序,MenuMainScreen是对我们程序界面的设置。

下面我们来看一下代码:

MenuMain:

import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;


public class MenuMain extends UiApplication {
	public static void main(String[] args) {
		
		new MenuMain().enterEventDispatcher();
	}
	private MenuMain() 
    {
		MainScreen Menu = new MenuMainScreen();    
        Menu.setTitle( new LabelField("Dillon<Menu Demo>", LabelField.USE_ALL_WIDTH | LabelField.ELLIPSIS ));
        pushScreen( Menu );
    }
}

 MenuMainScreen:

import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;

public class MenuMainScreen extends MainScreen {
	private MenuItem _addItem = new AddItem();
	 
protected void makeMenu( Menu menu, int instance ) 
{
    super.makeMenu( menu, instance );

    menu.add( _addItem );  
}   
}
final class AddItem extends MenuItem
{
    AddItem() 
    {
        super("Add" , 100, 100 );
    }
	public void run() {
		Dialog.alert("Failure");
	}        
}
 

    
[3] PreferenceScreen 失去CheckBoxPreference
    来源: 互联网  发布时间: 2014-02-18
PreferenceScreen 得到CheckBoxPreference

final ListAdapter adapter = getPreferenceScreen().getRootAdapter(); 
for (int idx = 0; idx < adapter.getCount(); idx++) { 
    Object object = adapter.getItem(idx); 
    if(object instanceof CheckBoxPreference){ 
        ((CheckBoxPreference)object).setChecked(false); 
    } 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3