一、android实用代码段(持续更新)

原创 2015年11月18日 16:07:28

常用的代码片段

1.双击回退按钮退出程序

    boolean isExit = false;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e(TAG + "======", "keyback====");
            if (!isExit) {
                isExit = true;
                Toast.makeText(m_context, R.string.exit_str, Toast.LENGTH_SHORT)
                        .show();
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        isExit = false;
                    }
                }, 2000);
                ;

                return false;

            } else {
                Log.e(TAG + "======", "退出应用");
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(0);
                //
            }
        }

        return false;
    }

2.拍照或者相册选择照片

    private static final int PICK_PHOTO_FOR_AVATAR = 1024;
    private static final int TAKE_PHOTO_FOR_AVATAR = 110;
    Uri originalUri;
    private void selectPhotoFromGallery() {
        // Create intent for picking a photo from the gallery

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(intent, PICK_PHOTO_FOR_AVATAR);
    }

    private void getPhotoFromCamera() {
        // 调用相机
        Intent mIntent = new Intent("android.media.action.IMAGE_CAPTURE");
        // 图片存储路径,可自定义
        File tmpFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg");
        // 获取这个图片的URI
        originalUri = Uri.fromFile(tmpFile);//这是个实例变量,方便下面获取图片的时候用
        mIntent.putExtra(MediaStore.EXTRA_OUTPUT, originalUri);
        startActivityForResult(mIntent, TAKE_PHOTO_FOR_AVATAR);
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != RESULT_OK) {
            return;
        }
        ;


        switch (requestCode) {
            case PICK_PHOTO_FOR_AVATAR:
                InputStream inputStream = null;
                if (data == null) return;
                try {
                    inputStream = getContentResolver().openInputStream(data.getData());
                    userHeadIv.setImageBitmap(BitmapFactory.decodeStream(inputStream));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                break;
            case TAKE_PHOTO_FOR_AVATAR:
                try {
                    FileInputStream fileInput = (FileInputStream) getContentResolver().openInputStream(Uri.parse(originalUri.toString()));
//                    inputStream = getContentResolver().openInputStream(data.getData());
                    userHeadIv.setImageBitmap(BitmapFactory.decodeStream(fileInput));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                break;
            default:

                break;

        }

3.文件拷贝

    private void inputStream2File(InputStream ins, File file) {
//        File file = new File(path);
        OutputStream outputStream = null;
        try {

            outputStream = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] bytes = new byte[1024];
            int read = 0;
            while ((read = inputStream.read(bytes)) != -1) {
                outputStream.write(bytes, 0, read);
            }
            outputStream.close();
//            ins.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

4.获取视频的第一帧图片

    public static Bitmap getVideoFirstFrame(String localPath){
        Bitmap bitmap = null;
        if (TextUtils.isEmpty(localPath)){
            LogUtil.error(Constants.TAG,"getVideoFirstFrame localPath is null");
            return bitmap;
        };

        File file = new File(localPath);
        if (!file.exists()){
            LogUtil.error(Constants.TAG,"getVideoFirstFrame file is not exists");
            return bitmap;
        }
        MediaMetadataRetriever mmr=new MediaMetadataRetriever();//实例化MediaMetadataRetriever对象
        mmr.setDataSource(localPath);
        Bitmap firstFramBitmap = mmr.getFrameAtTime();
        return firstFramBitmap;

    }

5.根据秒来获取小时、分钟、秒

    public static String getTimeStrBySecond(long second) {
        int hour = (int)second/3600;
        int m = (int)(second-hour*3600)/60;
        int s= (int)(second-hour*3600- m*60) ;
        String hh = hour<10?"0"+hour:hour+"";
        String mm = m < 10 ? "0"+m: m+"";
        String ss = s < 10 ? "0"+s: s+"";
        String timeStr = hh+":"+ mm+":"+ss;
        return timeStr;
    }

6.监听键盘状态

ViewTreeObserver.OnGlobalLayoutListener globalLayoutListener =  new ViewTreeObserver.OnGlobalLayoutListener() {
        private boolean isKeyboardUp;

        @Override
        public void onGlobalLayout() {
            final View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
            Rect r = new Rect();
            rootView.getWindowVisibleDisplayFrame(r);
            int screenHeight = rootView.getRootView().getHeight();

            // r.bottom is the position above soft keypad or device button.
            // if keypad is shown, the r.bottom is smaller than that before.
            int keypadHeight = screenHeight - r.bottom;

            Log.d(TAG, "keypadHeight = " + keypadHeight);

            if (keypadHeight > screenHeight * 0.15) { // 0.15 ratio is perhaps enough to determine keypad height.
                // keyboard is opened
                linExtention.setVisibility(GONE);
            }
            else {
                // keyboard is closed
            }

        }
    };

7.inputStream to string

static String convertStreamToString(java.io.InputStream is) {
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}

8.点击隐藏键盘

 Rect mRect = new Rect();
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        final int action = MotionEventCompat.getActionMasked(ev);

        int[] location = new int[2];
        chatBottomview.getInputEt().getLocationOnScreen(location);
        mRect.left = location[0];
        mRect.top = location[1];
        mRect.right = location[0] + chatBottomview.getInputEt().getWidth();
        mRect.bottom = location[1] + chatBottomview.getInputEt().getHeight();

        int x = (int) ev.getX();
        int y = (int) ev.getY();

        if (action == MotionEvent.ACTION_DOWN && !mRect.contains(x, y)) {
            InputMethodManager input = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            input.hideSoftInputFromWindow(chatBottomview.getInputEt().getWindowToken(), 0);
        }
        return super.dispatchTouchEvent(ev);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

推荐10 个短小却超实用的 JavaScript 代码段

JavaScript正变得越来越流行,它已经成为前端开发的第一选择,并且利用基于JavaScript语言的NodeJS,我们也可以开发出高性能的后端服务,甚至我还看到在硬件编程领域也出现了JavaSc...

50个必备的实用jQuery代码段

本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

50个必备的实用jQuery代码段

50个必备的实用jQuery代码段 今天会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一...

50个必备的实用jQuery代码段

1. 如何创建嵌套的过滤器: //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分。在这种情况下, //查询删除了任何没(:not)有(:has) //包含clas...

50个必备的实用jQuery代码段

本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助...

比较实用的jQuery代码段

1. 如何检测各种浏览器: (1)navigator.userAgent返回一个浏览器信息字符串。 (2)用到indexOf()方法,查找字符串中是否有指定的浏览器类型。 if(navigator.u...

50个必备的实用jQuery代码段.

1. 如何修改jQuery默认编码(例如默认UTF-8改成改GB2312): $.ajaxSetup({ ajaxSettings:{ contentType:"application/x-w...

超实用的JavaScript代码段 Item1 --倒计时效果

现今团购网、电商网、门户网等,常使用时间记录重要的时刻,如时间显示、倒计时差、限时抢购等,本文分析不同倒计时效果的计算思路及方法,掌握日期对象Date,获取时间的方法,计算时差的方法,实现不同的倒时计...

50个必备的实用jQuery代码段

0. 如何创建嵌套的过滤器: 1 2 3 4 5 //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹...

50个必备的实用jQuery代码段

本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)