android 一些小功能

1、图片压缩
                    
    从目录中加载图片:
        Bitmap bm=BitmapFactory.decodeFile("/mnt/sdcard/xxx.bmp");        ----原大小加载
        iv.setImageBitmap(bm);                                                ----速度慢
    压缩加载:
        ----------压缩的时候,常常要计算压缩倍数
        获取屏幕宽高:
        WindowManager widow=getWindowManager();
        int screenWidth=widow.getDefultDisplay().getWidth();
        int screenHeight=widow.getDefultDisplay.getHeight();
        获取图片宽高:
        Options ops=new Options();
        ops.inJustDecodeBounds=true;   只加载图片的属性。
        Bitmap bm=BitmapFactory.decodeFile("/mnt/sdcard/xxx.bmp",ops);    
        int bmpWidth=ops.outWidth();
        int bmpHeight=ops.outHeight();
        计算压缩比例:
        int times=1;
        int wtims=bmpWidth/screenWidth;
        int htimes=bmpHeight/screenHeight;
        if(wtims>htimes){times=wtims;}
        else{times=htimes;}
        
        ops.inSampleSize=times;        --------压缩比例
        ops.inJustDecodeBounds=flase;
        Bitmap bm=BitmapFactory.decodeFile("/mnt/sdcard/xxx.bmp",ops);
        iv.setImageBitmap(bm);
        
                                2、图片copy
        
        public void copyImage(View view){
            Bitmap bm;
              1.创建一张空白图片
            Bitmap copybm=Bitmap.createBitmap(bm.getWidth(),bm.getHeight,bm.getconfig());
              2.将旧图片bm的内容 画 到copybm中
                ----调用  画()  的类
            Canvas canvas=new Canvas(copybm);
                -----matrix 矩形对象
            Matrix matrix=new Matrix();
                -----paint 画笔
            Paint paint=new Paint();
            canvas.drawBitmap(bm,matrix,paint);  -----matrix,paint
              
            iv.setImageBitmap(copybm);
        }
        
                                `3、撕衣服
                                
        设置透明度:
            bm.setPixel(x,y,Color.TRANSPARENT);
            
        设置两个ImageView,对上层IV:    
        iv.setOnTouchListener(new View.OnTouchListener(){              --监听点击事件
            public boolean onTouch(View v,MotionEvent event){
                int action=event.getAction();
                switch(action){
                case MotionEvent.ACTION_UP:
                        break;
                case MotionEvent.ACTION_DOWN:
                        break;
                case MotionEvent.MOVE:
                    int x=(int ) event.getX();
                    int y=(int) event.getY();
                    for(int xi=x-2;xi<x+2;xi++){
                        for(int yi=y-2;yi<y+2;yi++){
                            copyImage,setPixel(xi,yi,Color.TRANSPARENT);
                        }
                    }
                    break;
                }
                return(ture);
            }
        });
        
        
                                4、播放音乐
                                
            MediaPlayer player=new MediaPlayer();
        1.播放
            player.setDataSource("/.../../xxx.mp3");
            
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);  --设置类型
              player.prepare();    -------    播放器准备
              player.start();    -------开始
            
            上方的方式,从网络加载可能会很慢。所以使用一步加载:
            player.prepareAsync();
            player.setOnpreparedListener(new OnpreparedListener(){
                pulic void onPrepared(MediaPlayer mp){
                    player.start();       -------设置监听器,加载完成后播放
                }
            });
            
            playerButton.setEnabled(flase);    ----- 禁用播放按钮
            --设置监听器,歌曲播放完成后,按钮启用
            player.setOnCompletionListener(new OnCompletionListener(){
                public void onCompletion(MediaPlayer mp){
                    playerButton.setEnabled(true);
                }
            });
        2.暂停
            player.pause();
        3.重播
            player.seekTo(0); -----跳到0毫秒。 单位 毫秒。
        4.停止
            player.stop();
            ---停止之后,释放,设空
            player.release();
            player=null;
                                
                                5、播放视频
            
        方法:
                MediaPlayer对象,配合控件 <SurfaceView    />     -----可用于视频、游戏界面等等
        
            public class MainActivity extends Activity {
        private MediaPlayer player;
        private SurfaceView surface;
        private SurfaceHolder sh;
        private Button pauseBt;
        private int jindu;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            surface=(SurfaceView)this.findViewById(R.id.surface);
            pauseBt=(Button)this.findViewById(R.id.pause);
        }
    
        public void player(View view){
            player=new MediaPlayer();
            try {
                player.setDataSource("http://192.168.0.129:8080/fuwuqi/123.mp4");
            } catch (Exception e)
            {e.printStackTrace();}
            sh=surface.getHolder();
            sh.addCallback(new Callback(){
                @Override
                public void surfaceChanged(SurfaceHolder holder, int format,
                        int width, int height) {
                    // TODO Auto-generated method stub
                    System.out.println("bm");
                }
                @Override
                public void surfaceCreated(SurfaceHolder holder) {
                    sh=surface.getHolder();
                    player.setDisplay(sh);
                    player.prepareAsync();    
                    player.setOnPreparedListener(new OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            // TODO Auto-generated method stub
                            player.seekTo(jindu);
                            player.start();
                        }
                    });
                }

@Override
                public void surfaceDestroyed(SurfaceHolder holder) {
                    // TODO Auto-generated method stub
                    jindu=player.getCurrentPosition();
                    player.stop();
                }
                
            });
            player.setDisplay(sh);
            player.prepareAsync();    
            player.setOnPreparedListener(new OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    player.start();
                    
                }
            });
        }
        public void pause(View view){
            if(pauseBt.getText().toString().equals("暂停")){
                if(player!=null&&player.isPlaying()){
                player.pause();
                pauseBt.setText("继续");}
            }else{
                player.start();
                pauseBt.setText("暂停");
            }
        }
        public void stop(View view){
            if(player!=null)
            {player.stop();
            player.release();}
        }
}

时间: 2024-10-07 22:14:15

android 一些小功能的相关文章

android闹钟小案例之功能阐述

最近花了一个星期左右的时间做了一个小闹钟,现在回过头来进行总结下.刚开始接触这个案例,总体觉着没有太大的难度,都是一些基础知识的堆砌,可现实总比理想残酷啊,这几天下来,每天都会有意料之外的bug出现.在debug的过程中,深深体会到了百度一下和谷歌谷歌的用处,基本常见的问题都可以在这里得到提示甚至答案.这篇文章先来介绍下这个案例所实现的功能,接下来再用几遍文章记录所用到的知识点. 功能简介: 1.闹钟基本功能:和平时的闹钟一样,用户在界面选择闹钟响起的时间,到达所设定时间后执行相应的指定操作.

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

Android实现小视频的录制和预览,界面和功能靠拢微信。

不过是看淡利益,看穿时间,推己及人. 先看一下效果图: 1,实现的功能 a)全屏幕预览录制播放. b)录制时间可定制(本实例15秒),录制按钮动画效果. c)录制完成即刻播放,可保存删除文件. d)录制按钮可以随意拖动复位. 2,可拓展的功能 a)可添加点击拍照功能. b)可添加开关闪关灯功能. c)对焦功能.(缺陷) d)可添加播放暂停功能. e)可分段录制,拼接视屏. 3,未实现的微信效果 a)录制视频时,拖动录制按钮实现焦距调整. b)视频压缩. 4,注意事项 a)本例以goole官方Ca

Android 带清除功能的输入框控件EditText

今天学习了自定义控件,然后自己做了一个用户登录小控件EditText,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,但是Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText. 先说明一下,我是用Android studio写的,代码已经共享到我的github上了,有需要的可以去下载. 我们可以为我们的输入框在上下左右设置图片,所以我们可以利用属性android:drawableRight设置我们的删除小图标,如

android闹钟小案例之知识点总结

上一篇文章对近期做的小闹钟做了功能阐述,现在来总结下整个开发过程中所用到的一些知识点: 1.TimePicker的监听 TimePicker控件是整个应用的核心,其它的操作都得基于对该控件的正确操控.对该控件的操作重要就是为其设置监听器,在监听事件中获取用户设置的时间. private Calendar calendar=Calendar.getInstance();//创建calendar对象 private class OnTimeChangedListenerImpl implements

Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框

转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEditText,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,IOS上面直接设置某个属性就可以实现这一功能,但是Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText,接下来就带大家来实现这一小小的功能 我们知道,我们可以为我们的输入框在上下左右

robotium脚本封装为APK,实现脱离手机数据线,使用按钮点击控制用例运行的小功能

最近一直在完成一些robotium的小功能,用来更方便的完成一些小功能的测试,或者可以说用来娱乐吧,幸得群内大神思路指点,就此引申,终于把这个功能得以实现 ---------------将robotium脚本封装为APK,使用按钮控制用例运行覆盖程度,测试结果以简单的xml文件输入到手机SD卡目录下---------------------- 废话不多说,转正题: 一.首先明确一点,这篇文章,是在你所编写的robotium脚本运行无异常的前提下实施 二.阐明思路: 1.我们需要一个运行良好的,逻

(转载) Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框

Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框 标签: Android清除功能EditText仿IOS的输入框 2013-09-04 17:33 70865人阅读 评论(57) 收藏 举报  分类: Android UI设计(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEdit

第三十七天 一乐在其中—Android的小游戏打飞机(一)

8月3日,晴天."绿树阴浓夏日长,楼台倒影入池塘, 水晶帘动微风起,满架蔷薇一院香." cocos2d是一个开源的游戏开发框架,利用它可以非常容易的开发2D游戏.目前最主要的分支是iPhone版本的,你可以在iPhone上开发2D游戏.它提供了物理,精灵(sprites),视差卷轴(parallax scrolling),支持iPhone touch和accelerator等很多功能.现在在App Store上已经有不少用cocos2d开发的游戏. 如果你想在Andriod上使用Jav