日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android學(xué)習(xí)筆記-實(shí)用代碼合集

本文為大家整理了Android學(xué)習(xí)實(shí)用代碼合集,希望對(duì)大家有所幫助。

一、當(dāng)利用textview顯示內(nèi)容時(shí),顯示內(nèi)容過多可能會(huì)折行或顯示不全,那樣效果很不好。今天發(fā)現(xiàn)android api中已經(jīng)給出自動(dòng)省略的功能。

實(shí)現(xiàn)如下:

 
 
 
  1.     android:layout_width="fill_parent"    
  2.     android:layout_height="wrap_content"    
  3.     android:id="@+id/hello"    
  4.     android:ellipsize="end"    
  5.    android:singleLine="true"    
  6. />   

二、學(xué)習(xí)]ImageView的scaletype屬性

ImageView的屬性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制圖片如何 resized/moved來匹對(duì)ImageView的size。ImageView.ScaleType / android:scaleType值的意義區(qū)別:

 
 
 
  1. CENTER /center 按圖片的原來size居中顯示,當(dāng)圖片長/寬超過View的長/寬,則截 取圖片的居中部分顯示   
  2. CENTER_CROP / centerCrop 按比例擴(kuò)大圖片的size居中顯示,使得圖片長 (寬)等于或大于View的長(寬)   
  3. CENTER_INSIDE / centerInside 將圖片的內(nèi)容完整居中顯示,通過按比例縮小 或原來的size使得圖片長/寬等于或小于View的長/寬   
  4. FIT_CENTER / fitCenter 把圖片按比例擴(kuò)大/縮小到View的寬度,居中顯示   
  5. FIT_END / fitEnd 把 圖片按比例擴(kuò)大/縮小到View的寬度,顯示在View的下部分位置   
  6. FIT_START / fitStart 把 圖片按比例擴(kuò)大/縮小到View的寬度,顯示在View的上部分位置   
  7. FIT_XY / fitXY 把圖片 不按比例 擴(kuò)大/縮小到View的大小顯示   
  8. MATRIX / matrix 用矩陣來繪制  

三、Uri與String之間的轉(zhuǎn)換

Uri u = Uri.parse( "content://media/internal/audio/media/81" );

Android 通過Uri獲取Bitmap對(duì)象

 
 
 
  1. private Bitmap getBitmapFromUri(Uri uri)   
  2.  {   
  3.   try   
  4.   {   
  5.    // 讀取uri所在的圖片   
  6.    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);   
  7.    return bitmap;   
  8.   }   
  9.   catch (Exception e)   
  10.   {   
  11.    Log.e("[Android]", e.getMessage());   
  12.    Log.e("[Android]", "目錄為:" + uri);   
  13.    e.printStackTrace();   
  14.    return null;   
  15.   }   
  16.  }   

四、Android圖片拖動(dòng)效果(Gallery及ImageAdapter用法)

 
 
 
  1. public class Activity01 extends Activity   
  2.     {   
  3.         /**  
  4.          * Gallery類概述(Gallery)此單詞翻譯過來為畫廊,美術(shù)館 一種view,以水平列表的方式顯示在屏幕中央 看一眼圖片就知道咋回事了  
  5.          * 此類繼承了 AbsSpinner  
  6.          */   
  7.         @Override   
  8.         public void onCreate(Bundle savedInstanceState)   
  9.         {   
  10.             super.onCreate(savedInstanceState);   
  11.             setContentView(R.layout.main);   
  12.             // 獲得Gallery對(duì)象   
  13.             Gallery g = (Gallery) findViewById(R.id.Gallery01);   
  14.             // 添加ImageAdapter給Gallery對(duì)象 注意哦Gallery類并沒有setAdapter這個(gè)方法   
  15.             // 這個(gè)方法是從AbsSpinner類繼承的   
  16.             g.setAdapter(new ImageAdapter(this));   
  17.             // 設(shè)置Gallery的背景圖片   
  18.             g.setBackgroundResource(R.drawable.bg0);   
  19.             // 設(shè)置Gallery的事件監(jiān)聽   
  20.             g.setOnItemClickListener(new GalleryItemListener());   
  21.         }   
  22.         class GalleryItemListener implements OnItemClickListener   
  23.         {   
  24.             public void onItemClick(AdapterView parent, View view, int position,   
  25.         long id) {   
  26.         Toast.makeText(Activity01.this, ”你選擇了” + (position + 1) + ” 號(hào)圖片”,   
  27.         Toast.LENGTH_SHORT).show();   
  28.         }   
  29.         }   
  30.     }  

ImageAdapter類繼承自BaseAdapter類 繼承BaseAdapter類就會(huì)實(shí)現(xiàn)一些方法 這些方法可以用來 設(shè)置圖片源、獲取圖片個(gè)數(shù)、設(shè)置顯示的方式等等。

 
 
 
  1. public class ImageAdapter extends BaseAdapter   
  2.     {   
  3.         // 定義Context   
  4.         private Context mContext;   
  5.         // 定義整型數(shù)組 即圖片源   
  6.         private Integer[] mImageIds =   
  7.         { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,   
  8.                 R.drawable.img5, R.drawable.img6, R.drawable.img7,   
  9.                 R.drawable.img8, };   
  10.         // 聲明ImageAdapter   
  11.         public ImageAdapter(Context c)   
  12.         {   
  13.             mContext = c;   
  14.         }   
  15.         // 獲取圖片的個(gè)數(shù)   
  16.         public int getCount()   
  17.         {   
  18.             return mImageIds.length;   
  19.         }   
  20.         // 獲取圖片在庫中的位置   
  21.         public Object getItem(int position)   
  22.         {   
  23.             return position;   
  24.         }   
  25.         // 獲取圖片ID   
  26.         public long getItemId(int position)   
  27.         {   
  28.             return position;   
  29.         }   
  30.         public View getView(int position, View convertView, ViewGroup parent)   
  31.         {   
  32.             ImageView imageview = new ImageView(mContext);   
  33.             // 給ImageView設(shè)置資源   
  34.             imageview.setImageResource(mImageIds[position]);   
  35.             // 設(shè)置布局 圖片120*120   
  36.             imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));   
  37.             // 設(shè)置顯示比例類型   
  38.             imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);   
  39.             return imageview;   
  40.         }   
  41.     }   

***布局文件.

 
 
 
  1.    
  2. android:id=”@+id/Gallery01″   
  3. android:layout_width=”fill_parent”   
  4. android:layout_height=”fill_parent”   
  5. android:spacing=”2px”   
  6. >   
  7.    
  8.    

五、介紹一個(gè)重要方法那就是requestWindowFeature(featrueId),它的功能是啟用窗體的擴(kuò)展特性。參數(shù)是Window類中定義的常量。

枚舉常量

 
 
 
  1. 1.DEFAULT_FEATURES:系統(tǒng)默認(rèn)狀態(tài),一般不需要指定   
  2. 2.FEATURE_CONTEXT_MENU:啟用ContextMenu,默認(rèn)該項(xiàng)已啟用,一般無需指定   
  3. 3.FEATURE_CUSTOM_TITLE:自定義標(biāo)題。當(dāng)需要自定義標(biāo)題時(shí)必須指定。如:標(biāo)題是一個(gè)按鈕時(shí)   
  4. 4.FEATURE_INDETERMINATE_PROGRESS:不確定的進(jìn)度   
  5. 5.FEATURE_LEFT_ICON:標(biāo)題欄左側(cè)的圖標(biāo)   
  6. 6.FEATURE_NO_TITLE:吳標(biāo)題   
  7. 7.FEATURE_OPTIONS_PANEL:啟用“選項(xiàng)面板”功能,默認(rèn)已啟用。   
  8. 8.FEATURE_PROGRESS:進(jìn)度指示器功能   
  9. 9.FEATURE_RIGHT_ICON:標(biāo)題欄右側(cè)的圖標(biāo)  

 

 
 
 
  1. // 隱藏頂部程序名稱 寫在setContentView(R.layout.xxxx);之前,不然報(bào)錯(cuò)   
  2.     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);           
  3.     requestWindowFeature(Window.FEATURE_NO_TITLE);    
  4. // 隱藏狀態(tài)欄   
  5.     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
  6.             WindowManager.LayoutParams.FLAG_FULLSCREEN);   

六、使用MediaStore.Images和 Cursor查詢本地圖片和圖片縮略圖

先看一個(gè)實(shí)例:

 
 
 
  1. String[] projection = { MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA};   
  2. Cursor cursor = mActivity.getContentResolver().query(   
  3.     MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,//指定縮略圖數(shù)據(jù)庫的Uri   
  4.     projection,//指定所要查詢的字段   
  5.     MediaStore.Images.Thumbnails._ID + " = ?",//查詢條件   
  6.     new String[] {"123" }, //查詢條件中問號(hào)對(duì)應(yīng)的值   
  7.     null);   
  8. cursor.moveToFirst();   
  9. String id = cursor.getString(0);   
  10. String data = cursor.getString(1);  

查詢圖片縮略圖數(shù)據(jù)庫,獲取id等于123的縮略圖信息。

轉(zhuǎn)換成Sql語句即為 select MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA from MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI where MediaStore.Images.Thumbnails._ID = 123

如果要查詢圖片,Uri地址為:MediaStore.Images.Media.EXTERNAL_CONTENT_URI

當(dāng)要獲取縮略圖時(shí):Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail   (mActivity.getContentResolver(),  id, Thumbnails.MICRO_KIND, null)

(1)讀取SD卡上面的圖片信息

 
 
 
  1. //想要的返回值所在的列      
  2.         String[] projection = { MediaStore.Images.Thumbnails._ID};     
  3.         //圖片信息存儲(chǔ)在 android.provider.MediaStore.Images.Thumbnails數(shù)據(jù)庫       
  4.         //快速查詢數(shù)據(jù)庫中的圖片對(duì)應(yīng)存放路勁               
  5.         Cursor cursor = managedQuery(     
  6.         MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,     
  7.                 projection, //List of columns to return :想要他返回的列      
  8.                 null, // Return all rows      
  9.                 null,     
  10.                 null);     
  11.         int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);    
  12.         uriArray = new Uri[cursor.getCount()];//把圖片路徑放在數(shù)組中    

(2)將讀取的圖片生成縮略圖

 
 
 
  1. while(cursor.moveToNext()&&i
  2.         {   //移到指定的位置,遍歷數(shù)據(jù)庫      
  3.             cursor.moveToPosition(i);     
  4.             uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,cursor.getInt(columnIndex)+"");     
  5.             uriArray[i]=uri;     
  6.             try {     
  7.                 bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));     
  8.                 if (bitmap != null) {     
  9.                     //將原來的位圖轉(zhuǎn)換成新的位圖      
  10.                     newBitmap = Bitmap.createScaledBitmap(bitmap,80, 80,true);     
  11.                     bitmap.recycle();//釋放內(nèi)存      
  12.                     if (newBitmap != null) {     
  13.                         publishProgress(new LoadedImage(newBitmap));     
  14.                     }     
  15.                 }     
  16.             } catch (IOException e) {}     
  17.             i++;     
  18.         }   

 

android在處理一寫圖片資源的時(shí)候,會(huì)進(jìn)行一些類型的轉(zhuǎn)換,現(xiàn)在有空整理一下:

1、Drawable → Bitmap

 
 
 
  1. public static Bitmap drawableToBitmap(Drawable drawable) {      
  2.         Bitmap bitmap = Bitmap      
  3.                         .createBitmap(      
  4.                        drawable.getIntrinsicWidth(),      
  5.                                         drawable.getIntrinsicHeight(),      
  6.                                         drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888      
  7.                                    : Bitmap.Config.RGB_565);      
  8.         Canvas canvas = new Canvas(bitmap);      
  9.         //canvas.setBitmap(bitmap);      
  10.         drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());      
  11.         drawable.draw(canvas);      
  12.         return bitmap;      
  13. }  

2、從資源中獲取Bitmap

 
 
 
  1. Resources res=getResources();      
  2. Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);   

3、Bitmap → byte[]

 
 
 
  1. private byte[] Bitmap2Bytes(Bitmap bm){      
  2.     ByteArrayOutputStream baos = new ByteArrayOutputStream();        
  3.     bm.compress(Bitmap.CompressFormat.PNG, 100, baos);        
  4.     return baos.toByteArray();      
  5.    }  

4、 byte[] → Bitmap

 
 
 
  1. private Bitmap Bytes2Bimap(byte[] b){      
  2.             if(b.length!=0){      
  3.                 return BitmapFactory.decodeByteArray(b, 0, b.length);      
  4.             }      
  5.             else {      
  6.                 return null;      
  7.             }      
  8.       }   

七、保存圖片到圖庫

Images.Media.EXTERNAL_CONTENT_URI這是一個(gè)系統(tǒng)圖片數(shù)據(jù)表,圖庫里面的圖片數(shù)據(jù)都是從這里面查詢出來的;調(diào)用insert就是往這個(gè)表里面插入一條數(shù)據(jù),插入成功的話,下次加載圖庫,就可以把新加入的數(shù)據(jù)從這個(gè)表中查詢并展示出來了.

 
 
 
  1. Images.Media.EXTERNAL_CONTENT_URI:數(shù)據(jù)表肯定就包括一些屬性字段,如下:   
  2. values.put(Images.Media.TITLE, title);   
  3. values.put(Images.Media.DISPLAY_NAME, filename);   
  4. values.put(Images.Media.DATE_TAKEN, dateTaken);   
  5. values.put(Images.Media.MIME_TYPE, IMAGE_MIME_TYPE);   
  6. values.put(Images.Media.ORIENTATION, degree[0]);   
  7. values.put(Images.Media.DATA, filePath);   
  8. values.put(Images.Media.SIZE, size);   

上面這些內(nèi)容的鍵值就是數(shù)據(jù)表里面的字段,當(dāng)然這并不是所有的,只是傳一些比較重要和常用的保存起來;比如圖片的名稱、時(shí)間、大小、類型等。

八、根據(jù)Uri獲取文件絕對(duì)路徑

 
 
 
  1. protected String getAbsoluteImagePath(Uri uri)    
  2.   {   
  3.       // can post image   
  4.       String [] proj={MediaStore.Images.Media.DATA};   
  5.       Cursor cursor = managedQuery( uri,   
  6.                       proj,                 // Which columns to return   
  7.                       null,       // WHERE clause; which rows to return (all rows)   
  8.                       null,       // WHERE clause selection arguments (none)   
  9.                       null);                 // Order-by clause (ascending by name)   
  10.       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);   
  11.       cursor.moveToFirst();   
  12.       return cursor.getString(column_index);  

分享題目:Android學(xué)習(xí)筆記-實(shí)用代碼合集
標(biāo)題路徑:http://www.dlmjj.cn/article/dpijihd.html