生活编程(一) 圣诞礼物大作战

来源:互联网 发布:宝宝学字软件 编辑:程序博客网 时间:2024/04/26 20:28

     从前有个歌手,为她的爱人创作歌曲,当他成名后,面对的是一大堆的歌迷时,他却不知道怎么写出好的歌曲了。


     写个app,写给自己想写的人。


    今天平安夜也,做了个东西——一个简单的Android应用,其实就是幻灯片加上音乐播放。这里感谢一下田啸大哥和云涛涟雾大哥,对一些问题给了指点。代码简单,其实在这里有人会问为什么不做个简单flash或者用会声会影实现呢,还是看对象,如果是外行的话,她一点击一个图标,发现放出好看的东西,效果完全不一样。如果对方是个开发工程师,那她就会从素材来看你的心思了。当然素材的准备时间是编程的几倍。


     因人而异,看对象喜欢什么。刚好她喜欢阿狸,搜集了一大堆阿狸的壁纸。bmp位图存储空间超大,而且壁纸的尺寸超大。一张一张用画图去调整大小可是很辛苦的。想起数字图像所学,活学活用。把素材放到一个文件夹里。


matlab批处理图像及保存为jpg格式

<span style="font-size:18px;">function like = resizeimg()filelist = dir('*.bmp');filenumber = length(filelist);for i = 1:filenumber    imagename = filelist(i).name;    temp = imread(imagename);    finalimg = imresize(temp,[600,800]);    name = strrep(imagename,'bmp','jpg');    imwrite(finalimg,name);end    </span>

    图片调整成800*600,jpg的格式会压缩很多的空间。


    接下来就是对你自己的素材做添加了。写上你想说的话或者自己编个故事。








    本来文件名直接用1,2,3等数字排好,发现一旦插入删除后顺序很麻烦,所以每张图片都有自己的独特名字,你自己编的故事自己心里清楚。


     再用一下java来个遍历和字符串添加:

<span style="font-size:18px;">public class ReadFileName {public static void main(String[] args) {String path = "F:\\present\\finish";showFileName(path);}public static void showFileName(String path){File file = new File(path);File[] array = file.listFiles();for(File every:array){String s = every.getName();String temp = s.substring(0, s.length()-4);temp = "R.drawable."+temp+",";System.out.println(temp);}}}</span>


     Android程序里用了和数组把这些Drawable.id装进去。

为了让图片全屏横屏播放:

      在AndroidManifest.xml添加:

<span style="font-size:18px;">android:screenOrientation="landscape"android:theme="@android:style/Theme.NoTitleBar.Fullscreen"  </span>


      布局一个简单的imageview即可。

    

       切换图片使用了handler。自己在第一张图片时再设置一个线程进行睡眠,好让对方刚观看时有个过渡时间。这个时候才响起音乐。同时,间隔一定的时间,让imageview改变图片即可。

<span style="font-size:18px;">this.imageshow = (ImageView) this.findViewById(R.id.ImageView01);this.imageshow.setBackgroundResource(R.drawable.ready);</span>


     背景音乐也是个麻烦事,同一首歌是很无聊的,圣诞就加点圣诞歌曲,然后计算好素材的播放时间和中间过渡的时刻,用相应的软件切出最完美的歌曲。

      再将音乐放在res/raw文件夹中,准备好

<span style="font-size:18px;">MediaPlayer mp = MediaPlayer.create(this, R.raw.qian);</span>
将其start即可。    


      播放完毕后有个按下返回键结束:退出可能有些问题,直接用了system退出。

<span style="font-size:18px;">Builder b = new AlertDialog.Builder(MainActivity.this);b.setTitle("— —! 你不小心按到返回了吧");b.setMessage("你真确定退出");b.setPositiveButton("确定", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {Toast.makeText(MainActivity.this, "byebye ",Toast.LENGTH_SHORT).show();//退出System.exit(0);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {Toast.makeText(MainActivity.this, "欢迎再次回来!",Toast.LENGTH_SHORT).show();}}).create().show();</span>

小心把她耳朵给震到,让她可以调节音量。

<span style="font-size:18px;">else if (keycode == KeyEvent.KEYCODE_VOLUME_DOWN) {am.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);return true;}if (keycode == KeyEvent.KEYCODE_VOLUME_UP) {am.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);return true;}</span>

     

    一个简单而又充满你们之间的故事的应用诞生,不仅仅是开发的乐趣,而且只属于你们,只有你们看得懂。对方看得懂。


      最后,祝大家平安夜平安,圣诞节快乐!



     


    最后,祝自己成功。







5 0
原创粉丝点击