当前位置:  编程技术>移动开发
本页文章导读:
    ▪新风干浪博客学习(一)plist文件读写操作        新风作浪博客学习(一)plist文件读写操作 文件plist 全名Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文.........
    ▪ 加减的艺术用来工作学习管理        加减的艺术用于工作学习管理 回顾做过的事情,总结起来,就是先加,后减,再加。不是吗?上学:先一点点的学习,积累,到现在,回忆似乎懂的就是那么一点?做软件:先了解业务、.........
    ▪ VideoView容易视频播放       VideoView简单视频播放 只是上上手而已的例子。 package com.chenchen.app; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.app.Activity; .........

[1]新风干浪博客学习(一)plist文件读写操作
    来源: 互联网  发布时间: 2014-02-18
新风作浪博客学习(一)plist文件读写操作
文件plist 全名Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。file->new->file->左边选Resource 右边选 Property List点右下角的next然后起名,出来的就是你要的plist文件


         此处用例举一个plist文件的Demo,只是对plist文件简单的读写操作


        新建工程命名plistFile,class Prefix  填写PF,然后next

[img]

[/img]


开始的时候并没有加入plist文件,除了工程自动生成的plistFile-Info.plist,然后直接在PFViewContoller.m文件中的viewDidLoad添加代码:
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
//    读取plist文件
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"testInfo" ofType:@"plist"];
    
    NSMutableDictionary *data=[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; 
//    打印出plist文件
    NSLog(@"%@",data);   
//    写入plist文件
    [data setObject:@"test1" forKey:@"key1" ];
    [data setObject:@"test2" forKey:@"key2"];

    [data writeToFile:@"testInfo.plist" atomically:YES];
    
    NSLog(@"%@",data);   
    NSLog(@"%@",[data objectForKey:@"key2"]);
}




这样做的目的只是想测试一下如果我们没有手工创建一个plist文件,当我们读取的时候系统会不会自动创建一个plist文件,测试结果是系统不会生成plist文件,输出plist文件内容为nil,运行结果截图:
[img]

[/img]


然后我们在手动创建一个plist文件,命名为testInfo.plist
[img]

[/img]

[img]

[/img]

[img]

[/img]


通过手动创建了plist文件后再次运行,可以读取数据:
[img]

[/img]



但是当我们打开testInfo.plist文件时,发现没有内容,这个有些不理解:
[img]

[/img]




然后我们在testInfo.plist文件右键Add Row,就可在里面添加数据;
[img]

[/img]


手动在testInfo.plist中添加了如下数据,然后点击运行:
[img]

[/img]

[img]

[/img]


从结果中我们可以看出,Key1,和key2在第一个NSLog打印中没有,因为key1和key2是在第一个NSLog后在写入testInfo.plist之中;


怎样用代码在向testInfo.plist中添加一个数组呢,在ViewDidLoad后面添加如下代码,即可以实现:
NSArray *array = [[NSArray alloc] initWithObjects:@"tes11",@"test12",@"test13",@"test14", nil];//数组初始化
    [data setObject:array forKey:@"arraytest"];//设置数组键值
    [data writeToFile:@"customInfo.plist" atomically:YES];//将数组数据写入testInfo.plist文件中
     NSLog(@"%@",data);



运行结果截图如下:
[img]

[/img]



    
[2] 加减的艺术用来工作学习管理
    来源: 互联网  发布时间: 2014-02-18
加减的艺术用于工作学习管理
回顾做过的事情,总结起来,就是先加,后减,再加。

不是吗?

上学:先一点点的学习,积累,到现在,回忆似乎懂的就是那么一点?

做软件:先了解业务、客户、尽可能的了解、模拟过程,到形成原型,再到产品,中间进行了多少次的加、减 ?

要注意的是千万不要将次要的东西当成主要矛盾来处理。

刚才想到了很多,现在突然好像又忘记了,请大家一起来写下去吧,

谢谢大力支持!

    
[3] VideoView容易视频播放
    来源: 互联网  发布时间: 2014-02-18
VideoView简单视频播放
只是上上手而已的例子。

package com.chenchen.app;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

public class MainActivity extends Activity {

	private Context context;
	private VideoView videoView;
	/*视频文件分别放在三个文件夹中,需要到时候全部放入一个list中随机播放*/
	private static final String MUSIC_PATH_1 = new String("/sdcard/qingbao/1/");
	private static final String MUSIC_PATH_2 = new String("/sdcard/qingbao/2/");
	private static final String MUSIC_PATH_3 = new String("/sdcard/qingbao/3/");
	private List<String> mMusicList = new ArrayList<String>();
	private int curIndex = 0;//
	Random r=new Random();
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		context=this;
		listFiles();
	}

	/* 播放列表 */
	private void listFiles() {
		// 取得指定位置的文件设置显示到播放列表
		File path_1 = new File(MUSIC_PATH_1);
		File[] list = path_1.listFiles(new MusicFilter());
		if (list.length > 0) {
			for (File file : list) {
				mMusicList.add(MUSIC_PATH_1+file.getName());
			}
		}
		
		File path_2 = new File(MUSIC_PATH_2);
		list = path_2.listFiles(new MusicFilter());
		if (list.length > 0) {
			for (File file : list) {
				mMusicList.add(MUSIC_PATH_2+file.getName());
			}
		}
		File path_3 = new File(MUSIC_PATH_3);
		list = path_3.listFiles(new MusicFilter());
		if (list.length > 0) {
			for (File file : list) {
				mMusicList.add(MUSIC_PATH_3+file.getName());
			}
		}
		
	}

	/* 过滤文件类型 */
	class MusicFilter implements FilenameFilter {
		public boolean accept(File dir, String name) {
			// 这里还可以设置其他格式的文件
			return (name.endsWith(".mp4"));
		}
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		if(videoView!=null&&videoView.isPlaying()){
			videoView.pause();
		}
		
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		startVideo();
	}

	private void startVideo(){
		videoView = (VideoView) findViewById(R.id.videoView);
		MediaController mc = new MediaController(context);
		videoView.setMediaController(mc);
		// videoView.setVideoURI(Uri.parse("http://....h.3gp"));
		videoView.requestFocus();
		play();
		videoView
				.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

					@Override
					public void onCompletion(MediaPlayer mp) {
						// TODO Auto-generated method stub
						play();//播放完毕再继续下一首
					}
				});
		videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
			
			@Override
			public boolean onError(MediaPlayer mp, int what, int extra) {
				// TODO Auto-generated method stub
				play();//播放出错再继续下一首
				return true;
			}
		});
	}
	
	private void play(){
		curIndex=r.nextInt(mMusicList.size());
		videoView.setVideoPath(mMusicList.get(curIndex));
		videoView.start();
	}
	
	private long waitTime = 2000;
	private long touchTime = 0;
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (event.getAction() == KeyEvent.ACTION_DOWN
				&& KeyEvent.KEYCODE_BACK == keyCode) {
			long currentTime = System.currentTimeMillis();
			if ((currentTime - touchTime) >= waitTime) {
				Toast.makeText(context, "再按一次退出程序", Toast.LENGTH_SHORT).show();
				touchTime = currentTime;
			} else {
				finish();
				System.exit(0);
			}
			return true;
		}else if(KeyEvent.KEYCODE_HOME == keyCode){
			return true;
		}

		return super.onKeyDown(keyCode, event);
	}

	@Override
    public void onAttachedToWindow () {
		/*本想屏蔽Home键,加上后播放器没画面,但有声音,why?*/
//        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
        super.onAttachedToWindow();
    }
	
}


<?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"
    android:gravity="center"
    >
    <VideoView
     android:id="@+id/videoView"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
    />
</LinearLayout>


android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

<!--为屏蔽home健而加-->
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

    
最新技术文章:
▪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