zoukankan      html  css  js  c++  java
  • android 屏幕分辨率获取,等比缩放,屏幕横竖屏设置,屏幕截取


    分辨率及密度获取:

    DisplayMetrics dm = new DisplayMetrics(); 
    dm = getResources().getDisplayMetrics(); 
    int screenWidth = dm.widthPixels; 
    int screenHeight = dm.heightPixels; 
    float density = dm.density; 
    float xdpi = dm.xdpi; 
    float ydpi = dm.ydpi;

    对于不同分辨率屏幕等比缩放方法:

    private int getValues_x(int value_x)
    	{
    		return (int)((float)value_x/480*width);
    	}
    	
    	private int getValues_y(int value_y)
    	{
    		return (int)((float)value_y/854*height);
    	}

    屏幕朝向设置:

    //强制为横屏   
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
    要设置成竖屏设置成 SCREEN_ORIENTATION_PORTRAIT

    AndroidManifest.xml 中设置屏幕朝向
    <activity android:name=".HandlerActivity" android:screenOrientation="landscape"/>
    <activity android:name=".HandlerActivity" android:screenOrientation="portrait"/>


    设置app在不同分辨率时,是否支持多密度的方法。
    <manifest xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:anyDensity="true" />
    </manifest>


    dp与px转换的方法:

    public static int dip2px(Context context, float dipValue){
      final float scale = context.getResources().getDisplayMetrics().density;
      return (int)(dipValue * scale +0.5f);
    }


    public static int px2dip(Context context, float pxValue){
      final float scale = context.getResource().getDisplayMetrics().density;
      return (int)(pxValue / scale +0.5f);
    }


    屏幕截取实现:

    1,

    /** 
             * 简易截屏方法 
             * @param v         视图 
             * @param filePath  保存路径 
             */  
            private void getScreenHot(View v, String filePath) {          
                try  
                {  
                    Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Config.ARGB_8888);  
                    Canvas canvas = new Canvas();  
                    canvas.setBitmap(bitmap);  
                    v.draw(canvas);  
          
                    try{  
                        FileOutputStream fos = new FileOutputStream(filePath);  
                        bitmap.compress(CompressFormat.PNG, 90, fos);  
                    }catch (FileNotFoundException e){  
                        Log.e("errormsg", e.toString());  
                        Toast.makeText(this, "找不到路径", 200).show();  
                    }  
                }catch (Exception e){  
                    Log.e("errormsg", e.toString());  
                  Toast.makeText(this, "截图失败", 200).show();  
                }  
            }  

    调用getScreenHot((View) getWindow().getDecorView(), "/sdcard/pic1.png"); 即可

    2,

    /** 
     * 获取和保存当前屏幕的截图 
     */  
    private void SaveCurrentImage()    
    {    
        //创建Bitmap    
        WindowManager windowManager = getWindowManager();    
        Display display = windowManager.getDefaultDisplay();    
        int w = display.getWidth();    
        int h = display.getHeight();    
            
        Bitmap bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );        
            
        //获取屏幕    
        View decorview = this.getWindow().getDecorView();     
        decorview.setDrawingCacheEnabled(true);     
        bmp = decorview.getDrawingCache();     
          
        String SavePath = getSDCardPath()+"/ScreenImage";  
        
        //存储为Bitmap     
        try {    
            SimpleDateFormat sdf = new SimpleDateFormat(  
                    "yyyy-MM-dd_HH-mm-ss", Locale.CHINA);  
                  
            File path = new File(SavePath);    
            //文件    
            String filepath = SavePath + "/"+sdf.format(new Date()) + ".png";    
            File file = new File(filepath);    
            if(!path.exists()){    
                path.mkdirs();    
            }    
            if (!file.exists()) {    
                file.createNewFile();    
            }    
                
            FileOutputStream fos = null;    
            fos = new FileOutputStream(file);    
            if (null != fos) {    
                bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);    
                fos.flush();    
                fos.close();      
                    
                Toast.makeText(this, "截屏文件已保存至SDCard/ScreenImage/下", Toast.LENGTH_LONG).show();    
            }    
        
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
    }    






  • 相关阅读:
    HDOJ 1846 Brave Game
    并查集模板
    HDU 2102 A计划
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    POJ 1321 棋盘问题
    CF 999 C.Alphabetic Removals
    CF 999 B. Reversing Encryption
    string的基础用法
    51nod 1267 4个数和为0
  • 原文地址:https://www.cnblogs.com/happyxiaoyu02/p/6818985.html
Copyright © 2011-2022 走看看