Android常用知識(shí)點(diǎn)

1. Android之Context和Activity互相轉(zhuǎn)換

<1>、context轉(zhuǎn)換為activity 

Activity activity = (Activity) context;

<2>、從activity得到context

//在activity的方法中用context = getBaseContext();
//而在activity中用context = this即可. ,因?yàn)锳ctivity的父類(lèi)是Context

2. 日期格式化 相互轉(zhuǎn)換

  • 日期轉(zhuǎn)字符串
   Calendar canlendarNow=Calendar.getInstance();
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   String str = sdf.format(canlendarNow);
   Log.e("Tiger:", str);
  • 字符串轉(zhuǎn)日期
  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. 動(dòng)態(tài)設(shè)置 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. 設(shè)置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);
            //會(huì)獲取到四張圖片分別為 左上右下
            Drawable[] drawables = textView.getCompoundDrawables();
                  //參數(shù)說(shuō)明:距左邊距離,距右邊距離,長(zhǎng)寬
            drawables[1].setBounds(5, 5, 100, 100);
            //沒(méi)有圖片設(shè)置為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不顯示點(diǎn)擊效果及分割線(xiàn)

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

android:divider="@null"

8. 任何類(lèi)型轉(zhuǎn)字符串

String.valueof()

9.Base64 字符串與Bitmap 之間的相互轉(zhuǎn)換

  /**
    * 將Bitmap轉(zhuǎn)換成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字符串轉(zhuǎn)換為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 中的內(nèi)容

   /**
    * 讀取 InputStream 到 String字符串中
    */
   public static String readStream(InputStream in) {
       try {
           //<1>創(chuàng)建字節(jié)數(shù)組輸出流,用來(lái)輸出讀取到的內(nèi)容
           ByteArrayOutputStream baos = new ByteArrayOutputStream();
           //<2>創(chuàng)建緩存大小
           byte[] buffer = new byte[1024]; // 1KB
           //每次讀取到內(nèi)容的長(zhǎng)度
           int len = -1;
           //<3>開(kāi)始讀取輸入流中的內(nèi)容
           while ((len = in.read(buffer)) != -1) { //當(dāng)?shù)扔?1說(shuō)明沒(méi)有數(shù)據(jù)可以讀取了
               baos.write(buffer, 0, len);   //把讀取到的內(nèi)容寫(xiě)到輸出流中
           }
           //<4> 把字節(jié)數(shù)組轉(zhuǎn)換為字符串
           String content = baos.toString();
           //<5>關(guān)閉輸入流和輸出流
           in.close();
           baos.close();
           //<6>返回字符串結(jié)果
           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.延遲執(zhí)行

   new Handler().postDelayed(new Runnable() {
       @Override
       public void run() {
           // 對(duì)應(yīng)操作
       }
   },5000);

12. Java 占位符拼接字符串

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

13.讀取資源文件

raw 文件夾下資源會(huì)直接打進(jìn) APK文件中

  • 讀取res/raw 下的文件資源,可以通過(guò)一下方式來(lái)獲取輸入流

    InputStream is = getResources().openRawResource(R.raw.filename);    
    
  • 通過(guò) URI訪(fǎng)問(wèn) raw資源

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

assets 注意assets 文件夾放在 main文件夾下,文件名帶后綴

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

raw 和 assets 區(qū)別:

raw 可以通過(guò) R.raw.filename來(lái)使用,assets不可以, assets 中可以放文件夾,raw不可以

14.Selector

15.顏色

透明: #00000000

半透明: #e0000000

通過(guò)代碼設(shè)置:

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

16.設(shè)置壁紙 WallpaperManager

首先添加權(quán)限

<uses-permission android:name="android.permission.SET_WALLPAPER"/>
  WallpaperManager manager = WallpaperManager.getInstance(mContext);
  manager.setStream(inpustStream); //通過(guò)數(shù)據(jù)流設(shè)置壁紙
  //manager.setBitmap();  //通過(guò)Bitmap 設(shè)置壁紙
  //manager.clear(); //清除壁紙?jiān)O(shè)置為默認(rèn)壁紙

17.圖片選擇器

啟動(dòng)選擇器:

        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); //根據(jù)uri 得到InputStream
                    //inputStream.available(); //inputStream 大小
                }
            }
            break;
    }
}

18.創(chuàng)建資源ID

String.xml 文件中添加

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

19.打開(kāi)關(guān)閉軟鍵盤(pán)

  /**
     * 打卡軟鍵盤(pán)
     *
     * @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);
    }

    /**
     * 關(guān)閉軟鍵盤(pán)
     *
     * @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圖片

首先需要開(kāi)啟緩存:

imageView.setDrawingCacheEnabled(true); //開(kāi)啟緩存

獲取圖片:

Bitmap bitmap=ivHeader.getDrawingCache();

21.Navigation 隱藏某個(gè)菜單列表

MenuItem menuItem =navigationView.getMenu().findItem(R.id.menu_id);
menuItem.setVisiable(false);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • 以下知識(shí)點(diǎn)為常用且不熟知的一些知識(shí)點(diǎn) 1.TextView 1.1 shapeDrawable知識(shí)點(diǎn) 1.2 dr...
    侯蛋蛋_閱讀 3,612評(píng)論 0 5
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線(xiàn)程,因...
    小菜c閱讀 7,390評(píng)論 0 17
  • Day55 早上起來(lái)外婆和了餃子餡,搟了面皮,等我起來(lái)一起包。 早上吃了一大碗水煮餃,自己包的就是比超市買(mǎi)的速凍餃...
    小懶說(shuō)Yolo閱讀 248評(píng)論 0 1
  • 回家后整個(gè)人的生物鐘都隨著家人的生活習(xí)慣而自然地有了轉(zhuǎn)變,不僅早睡早起、還看起了電視。 想起小時(shí)候,為了能看成電視...
    ConnecToMe閱讀 328評(píng)論 0 0

友情鏈接更多精彩內(nèi)容