Android常用知识点

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);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容