編輯:關於Android編程
問題:如果圖片很大,全部載入內存,而顯示屏又不大,那麼再大的圖片也不會提高視覺效果的,而且會消耗無謂的內存。
解決辦法就是根據實際需要多大的圖片,然後動態計算應該載入多大的圖片;但是因為不太可能圖片大小和實際需要的大小一致,故此需要載入圖片大小為一個2的某次方的值,而大於實際需要的大小。
如圖,載入一個微縮圖大小為100*100
新建一個項目,
建立一個類,以便調用其中的函數處理圖片資源,全部代碼如下:
package bill.su.loadbitmap; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; public class BitmapUtils { public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; // Calculate the largest inSampleSize value that is a power of 2 and // keeps both // height and width larger than the requested height and width. while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) { inSampleSize *= 2; } } return inSampleSize; } public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options); } }
主界面的邏輯代碼添加代碼:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = (ImageView) findViewById(R.id.pandaImageView); imageView.setImageBitmap(BitmapUtils.decodeSampledBitmapFromResource( getResources(), R.drawable.panda, 100, 100)); }注意R.drawable.panda是怎麼來的。只要在項目文件夾中的res文件夾的drawable文件夾添加一個圖片命名為panda,在Eclipse刷新項目就會顯示這個id了。如果沒有drawable這個文件夾也不要緊,直接自己新建一個文件夾就可以了。
如果圖片沒有顯示,很可能是圖片資源不存在,這樣項目是不會提示錯誤的,直接沒有顯示出來。
看看項目結構圖,就知道如何建立這個項目了:
這裡主要學習的代碼是BitmapUtils中的代碼,這樣已經封裝好了,以後可以當做自己的一個資源類調用了。
安卓手機輸入法彈出,消失會觸發window.onresize事件,我們一般的解決方法是獲取焦點,底部隱藏,失去焦點,底部菜單出現,但是,有些人會點擊這個按鈕收起鍵牌那麼,
Android 開發的程序員開發程序的時候,一定為log而苦惱過吧。Eclipse老是Log找不到,是不是很讓人不爽,雖然Android Studio的Logcat功能很
關於滑動效果,在Android中用得比較多,本示例實現的滑動效果是使用ViewFlipper來實現的,當然也可以使用其它的View來實現。接下來就讓我們開始實現這種效果。
Socket是基於Tcp的鏈接,適用於長鏈接Socke通訊需要客戶端和服務器,客戶端我們在android上編寫,而服務器則選擇在eclipse上編寫上效果圖;eclips