Android圖譜(個人記錄)
阿新 • • 發佈:2018-12-08
最近想搞一個圖譜app出來,主要記錄各個知識點,流行的框架的使用,這篇文章也是為了以做筆記形式寫的
暫時打算分為下面幾個部分:
四大元件
UI
Net
DynamicLoad
Cache
Database
Framework
JNI
AIDL
優秀輪子
待補充
下面開始細分
四大元件
Activity
Service
Content Provider
BroadCast Receiver
UI
ImageView
BitmapConfig類:可以解碼圖片,將resource解碼成bitmap物件大圖載入
BitmapRegionDecoder 載入巨型圖片,還要保證他的size的話,可以使用谷歌提供的類 使用也是非常的簡單,獲取到圖片流或者location,定義要顯示的區域位置 如下public static Bitmap decodeSampledBitmapFromFile(String filename, int reqWidth, int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filename, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filename, options); }
mImageView = (ImageView) findViewById(R.id.id_imageview);
try
{
InputStream inputStream = getAssets().open("tangyan.jpg");
//獲得圖片的寬、高
BitmapFactory.Options tmpOptions = new BitmapFactory.Options();
tmpOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(inputStream, null, tmpOptions);
int width = tmpOptions.outWidth;
int height = tmpOptions.outHeight;
//設定顯示圖片的中心區域
BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(width / 2 - 100, height / 2 - 100, width / 2 + 100, height / 2 + 100), options);
mImageView.setImageBitmap(bitmap);
} catch (IOException e)
{
e.printStackTrace();
}
具體特大圖,需要做的滑動檢視其它區域,可以參考這篇博文:
http://blog.csdn.net/zuo8787/article/details/51406986
放大縮小等各種手勢
說之前大家要明白單點與多點的區別:
單手指操作:ACTION_DOWN---ACTION_MOVE----ACTION_UP
多手指操作:ACTION_DOWN---ACTION_POINTER_DOWN---ACTION_MOVE--ACTION_POINTER_UP---ACTION_UP.
這種手勢縮放操作,一般就是監聽到手勢變化值,在對應重新整理圖片,具體操作可以參考下面兩篇博文:
http://blog.csdn.net/lmj623565791/article/details/39474553
http://blog.csdn.net/jj120522/article/details/8467810
Fresco:https://github.com/facebook/fresco 優點:OOM優化非常好,從native層優化的,缺點:包較大,除非是專業圖片app,否則推薦glide或者Piscasso
ListView
ListView RecyclerView 優化自定義View
繪製view 繪製textSurfaceView
動畫
幀動畫 補間動畫 屬性動畫dialog
Fragment
Material Design
Webview
Net
http請求
訊息推送,長連線
圖片下載優化
音訊視訊流
App更新
DynamicLoad
熱更
DynamicLoadAPK
VirtualAPK
DroidPlugin
Cache
圖片快取
其他快取
Framework
攔截器框架
動態代理框架
路由框架
JNI
AIDL
優秀輪子
Lottie
GreenDao
未完待續