美文网首页
Android常用知识点

Android常用知识点

作者: __不将就 | 来源:发表于2018-01-22 19:40 被阅读0次

    1. Android之Context和Activity互相转换

    <1>、context转换为activity 
    
    Activity activity = (Activity) context;
    
    <2>、从activity得到context
    
    //在activity的方法中用context = getBaseContext();
    //而在activity中用context = this即可. ,因为Activity的父类是Context
    

    2. 日期格式化 相互转换

    • 日期转字符串
       Calendar canlendarNow=Calendar.getInstance();
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       String str = sdf.format(canlendarNow);
       Log.e("Tiger:", str);
    
    • 字符串转日期
      SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
      try {
          Date date= sdf.parse("2018-08-08");
          String strDate= sdf.format(date);
          Log.e("Tiger:", strDate);
    

    3. 动态设置 Margins

    -2表示 LinearLayout.LayoutParams.WRAP_CONTENT

        LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(-2,-2);
        lp.setMargins(10,10,10,10);
        view.setLayoutParams(lp);
    

    4. 遍历Map集合

        Set<String> sets= maps.keySet();
        for(String key:sets){
            System.out.println(key+":"+maps.get(key);
        }
        for(Map.Entry<String,String> item:maps.entrySet()){
            System.out.println(item.getKey()+":"+item.getValue());
        }
    

    5. 设置Drawable图片大小

          int[] textviews = {R.id.tvHome, R.id.tvSchedule,R.id.tvData,R.id.tvRanking,R.id.tvGallery};
           for (int i : textviews) {
                TextView textView = (TextView) findViewById(i);
                //会获取到四张图片分别为 左上右下
                Drawable[] drawables = textView.getCompoundDrawables();
                      //参数说明:距左边距离,距右边距离,长宽
                drawables[1].setBounds(5, 5, 100, 100);
                //没有图片设置为null
                textView.setCompoundDrawables(null, drawables[1], null, null);
            }
    

    6. Glide 解析图片

        Glide.with(MainActivity.this).load(Base64.decode(base64字符串, Base64.DEFAULT)).into(imageView);
    
    • **不缓存图片 ** .load(Glide.TRIM_MEMORY_MODERATE)

    7.ListView不显示点击效果及分割线

    android:listSelector="@android:color/transparent"

    android:divider="@null"

    8. 任何类型转字符串

    String.valueof()
    

    9.Base64 字符串与Bitmap 之间的相互转换

      /**
        * 将Bitmap转换成base64字符串
        * @param bitmap
        * @return
        */
     public static String bitmaptoBase64(Bitmap bitmap) {
            String result = null;
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
                baos.flush();
                baos.close();
                byte[] bytes = baos.toByteArray();
                result = Base64.encodeToString(bytes, Base64.DEFAULT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }
    
       /**
        * 将base64字符串转换为Bitmap
        * @param base64String
        * @return
        */
       public Bitmap base64ToBitmap(String base64String){
           byte[] bytes=Base64.decode(base64String,Base64.DEFAULT);
           Bitmap bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length);
           return bitmap;
       }
    

    10.读取InputStream 中的内容

       /**
        * 读取 InputStream 到 String字符串中
        */
       public static String readStream(InputStream in) {
           try {
               //<1>创建字节数组输出流,用来输出读取到的内容
               ByteArrayOutputStream baos = new ByteArrayOutputStream();
               //<2>创建缓存大小
               byte[] buffer = new byte[1024]; // 1KB
               //每次读取到内容的长度
               int len = -1;
               //<3>开始读取输入流中的内容
               while ((len = in.read(buffer)) != -1) { //当等于-1说明没有数据可以读取了
                   baos.write(buffer, 0, len);   //把读取到的内容写到输出流中
               }
               //<4> 把字节数组转换为字符串
               String content = baos.toString();
               //<5>关闭输入流和输出流
               in.close();
               baos.close();
               //<6>返回字符串结果
               return content;
           } catch (Exception e) {
               e.printStackTrace();
               return  e.getMessage();
           }
       }
       public static String readStream2(InputStream in) {
    
           try {
               BufferedReader  reader = new BufferedReader(new InputStreamReader(in));
               StringBuilder sb_response = new StringBuilder();
               String line;
               while ((line = reader.readLine()) != null) {
                   sb_response.append(line);
               }
               in.close();
               return  sb_response.toString();
    
           } catch (Exception e) {
               e.printStackTrace();
               return  "";
           }
       }
    

    11.延迟执行

       new Handler().postDelayed(new Runnable() {
           @Override
           public void run() {
               // 对应操作
           }
       },5000);
    

    12. Java 占位符拼接字符串

    MessageFormat.format("My name is {0}. I am {1} year old .",name,age);
    

    13.读取资源文件

    raw 文件夹下资源会直接打进 APK文件中

    • 读取res/raw 下的文件资源,可以通过一下方式来获取输入流

      InputStream is = getResources().openRawResource(R.raw.filename);    
      
    • 通过 URI访问 raw资源

    Uri.parse("android.resource://" + this.getActivity().getPackageName()+ "/"+R.raw.teaser);
    

    assets 注意assets 文件夹放在 main文件夹下,文件名带后缀

    InputStream inputStream= getAssets().open("filename.txt");
    

    raw 和 assets 区别:

    raw 可以通过 R.raw.filename来使用,assets不可以, assets 中可以放文件夹,raw不可以

    14.Selector

    15.颜色

    透明: #00000000

    半透明: #e0000000

    通过代码设置:

      View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id 
      v.getBackground().setAlpha(100);//0~255透明度值 
    

    16.设置壁纸 WallpaperManager

    首先添加权限

    <uses-permission android:name="android.permission.SET_WALLPAPER"/>
    
      WallpaperManager manager = WallpaperManager.getInstance(mContext);
      manager.setStream(inpustStream); //通过数据流设置壁纸
      //manager.setBitmap();  //通过Bitmap 设置壁纸
      //manager.clear(); //清除壁纸设置为默认壁纸
    

    17.图片选择器

    启动选择器:

            Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("image/*");
            startActivityForResult(intent,1);
    

    获取选中图片:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(requestCode){
            case 1:
                if(resultCode== Activity.RESULT_OK){
                    if(data!=null)
                    {
                        Uri uri=data.getData();
                        iv.setImageURI(uri); //图片显示到ImageView中
                        InputStream inputStream=getContentResolver().openInputStream(uri); //根据uri 得到InputStream
                        //inputStream.available(); //inputStream 大小
                    }
                }
                break;
        }
    }
    

    18.创建资源ID

    String.xml 文件中添加

    <item name="tag_id" type="id"></item>
    <item name="tag_type" type="id"></item>
    

    19.打开关闭软键盘

      /**
         * 打卡软键盘
         *
         * @param mEditText 输入框
         * @param mContext  上下文
         */
        public static void openKeybord(final EditText mEditText, final Context mContext) {
    
            InputMethodManager imm = (InputMethodManager) mContext
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
                    InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    
        /**
         * 关闭软键盘
         *
         * @param mEditText 输入框
         * @param mContext  上下文
         */
        public static void closeKeybord(EditText mEditText, Context mContext) {
            InputMethodManager imm = (InputMethodManager) mContext
                    .getSystemService(Context.INPUT_METHOD_SERVICE);
    
            imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
        }
    

    20. 获取ImageView的Bitmap图片

    首先需要开启缓存:

    imageView.setDrawingCacheEnabled(true); //开启缓存
    

    获取图片:

    Bitmap bitmap=ivHeader.getDrawingCache();
    

    21.Navigation 隐藏某个菜单列表

    MenuItem menuItem =navigationView.getMenu().findItem(R.id.menu_id);
    menuItem.setVisiable(false);
    

    相关文章

      网友评论

          本文标题:Android常用知识点

          本文链接:https://www.haomeiwen.com/subject/qzjraxtx.html