Android小知识点整理

RadioButton和CheckBox使用

在代码控制RadioButton的状态,状态改了,但是UI没有变,做法是使用CheckBox。
如果有下图这种需求,多个支付操作,在切换的时候不想让RadioButton有点击操作,而是通过控制外层ViewGroup的点击来控制RadioButton的UI,需要设置RadioButton.setOnclickable(false)

Android小知识点整理_第1张图片
1.jpg

Android4.4及以上设置状态栏指定颜色或者透明

 /**
     * 设置状态栏颜色
     */
    public static void setStatusBarColor(Activity activity,boolean isTranslucent) {
        if (activity == null){
            return;
        }
        String activityName = activity.getClass().getSimpleName();
        try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                View decorView = activity.getWindow().getDecorView();
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                if (isTranslucent){
                    activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
                }
                else {
                     activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity,     R.color.colorAccent));
                }
            }
            else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
                // 生成一个状态栏大小的矩形
                View statusBarView = new View(activity);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        getStatusBarHeight(activity));
                statusBarView.setLayoutParams(params);
                if (isTranslucent){
                    statusBarView.setBackgroundColor(Color.TRANSPARENT);
                }else {
                    statusBarView.setBackgroundColor(ContextCompat.getColor(activity, R.color.colorAccent));
                }
                // 添加 statusView 到布局中
                ViewGroup decorView = (ViewGroup)activity.getWindow().getDecorView();
                decorView.addView(statusBarView);
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogUtil.e(TAG,"设置状态栏透明异常,方法名:setStatusBarColor");
        }
    }

    /**
     * 获取手机状态栏高度
     * @param activity
     * @return
     */
    public static int getStatusBarHeight(Activity activity){
        int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");

        int statusHeight = activity.getResources().getDimensionPixelSize(resourceId);

        return statusHeight;
    }

隐藏状态栏

 /**
     * 设置指定界面全屏显示
     * @param context
     */
    public static void setFullscreenMode(Activity context){
        if (context != null) {

            context.getWindow().setFlags(
                        WindowManager.LayoutParams.FLAG_FULLSCREEN,
                        WindowManager.LayoutParams.FLAG_FULLSCREEN);
          }
    }

Android中颜色透明度对应16进制值


 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

android 移除栈中指定的activity
需求:MainActivity >> SecondActivity >> ThirdActivity >> HomeActivity,SecondActivity 点击返回回到MainActivity 。这个地方会有一个问题就是在进入HomeActivity之后,点击返回会回到MainActivity ,但是应该是结束应用才对。

如何在当前页面finish掉其他的界面呢,方法当然会有很多,建议使用EventBus发送消息。

Android打开各种类型的文件、预览不同类型的文件

/** 
 * 打开一个文件 
 *  
 * @param filePath 
 *  文件的绝对路径 
 */  
private void openFile(final String filePath)  
{  
    String ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase(Locale.US);  
    try  
    {  
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();  
        String temp = ext.substring(1);  
        String mime = mimeTypeMap.getMimeTypeFromExtension(temp);  
  
        Intent intent = new Intent();  
        intent.setAction(android.content.Intent.ACTION_VIEW);  
        File file = new File(filePath);  
        intent.setDataAndType(Uri.fromFile(file), mime);  
        startActivity(intent);  
    }  
    catch (Exception e)  
    {  
        e.printStackTrace();  
        Toast.makeText(getApplicationContext(), "无法打开后缀名为." + ext + "的文件!",  
                Toast.LENGTH_LONG).show();  
    }  
}  

原文地址:http://blog.csdn.net/eieihihi/article/details/45872051

Fragment动态全屏
在activity中设置如下代码,在对应的fragment的setUserVisibleHint调用。

/**
     * 控制是否全屏
     * @param isfull
     */
   public void setFullScreen(boolean isfull){
        if (isfull){
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        else {
            WindowManager.LayoutParams attrs = getWindow()
                    .getAttributes();
            attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
            getWindow().setAttributes(attrs);
        }
    }

你可能感兴趣的:(Android小知识点整理)