最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3.activity result 的时候data == null
4.调用图库的时候没找到软件
首先是调用系统拍照,和图库的代码
package com.chzh.fitter.util;
import java.io.File;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.widget.Toast;
//在onActivityResult方法中根据requestCode和resultCode来获取当前拍照的图片地址。
//注意:这里有个问题,在有些机型当中(如SamsungI939、note2等)遇见了当拍照并存储之后,intent当中得到的data为空:
/**
-
data = null 的情况主要是由于拍照的时候横屏了,导致重新create, 普通的解决方法可以在sharedpreference里面保存拍照文件的路径(onSaveInstance保存),
-
在onRestoreSaveInstance里面在获取出来.
-
最简单的可以用fileUtil 里面的一个静态变量保存起来…
-
*/
public class CameraUtil {
private static final String IMAGE_TYPE = “image/*”;
private Context mContext;
public CameraUtil(Context context) {
mContext = context;
}
/**
-
打开照相机
-
@param activity 当前的activity
-
@param requestCode 拍照成功时activity forResult 的时候的requestCode
-
@param photoFile 拍照完毕时,图片保存的位置
*/
public void openCamera(Activity activity, int requestCode, File photoFile) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
activity.startActivityForResult(intent, requestCode);
}
/**
-
本地照片调用
-
@param activity
-
@param requestCode
*/
public void openPhotos(Activity activity, int requestCode) {
if (openPhotosNormal(activity, requestCode) && openPhotosBrowser(activity, requestCode) && openPhotosFinally());
}
/**
- PopupMenu打开本地相册.
*/
private boolean openPhotosNormal(Activity activity, int actResultCode) {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
IMAGE_TYPE);
try {
activity.startActivityForResult(intent, actResultCode);
} catch (android.content.ActivityNotFoundException e) {
return true;
}
return false;
}
/**
- 打开其他的一文件浏览器,如果没有本地相册的话
*/
private boolean openPhotosBrowser(Activity activity, int requestCode) {
Toast.makeText(mContext, “没有相册软件,运行文件浏览器”, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // “android.intent.action.GET_CONTENT”
intent.setType(IMAGE_TYPE); // 查看类型 String IMAGE_UNSPECIFIED =
// “image/*”;
Intent wrapperIntent = Intent.createChooser(intent, null);
try {
activity.startActivityForResult(wrapperIntent, requestCode);
} catch (android.content.ActivityNotFoundException e1) {
return true;
}
return false;
}
/**
- 这个是找不到相关的图片浏览器,或者相册
*/
private boolean openPhotosFinally() {
Toast.makeText(mContext, “您的系统没有文件浏览器或则相册支持,请安装!”, Toast.LENGTH_LONG).show();
return false;
}
/**
-
获取从本地图库返回来的时候的URI解析出来的文件路径
-
@return
*/
public static String getPhotoPathByLocalUri(Context context, Intent data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = context.getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
return picturePath;
}
}
接下来是解决oom的
package com.chzh.fitter.util;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.media.ExifInterface;
import android.net.Uri;
import android.util.Log;
import android.widget.ImageView;
import com.androidquery.util.AQUtility;
/**
-
@author jarrahwu
*/
public class ImageUtil {
/**
-
Utility method for downsampling images.
-
@param path
* the file path
- @param data
* if file path is null, provide the image data directly
- @param target
* the target dimension
- @param isWidth
* use width as target, otherwise use the higher value of height
* or width
- @param round
* corner radius
- @return the resized image
*/
public static Bitmap getResizedImage(String path, byte[] data, int target,
boolean isWidth, int round) {
Options options = null;
if (target > 0) {
Options info = new Options();
info.inJustDecodeBounds = true;
//设置这两个属性可以减少内存损耗
info.inInputShareable = true;
info.inPurgeable = true;
decode(path, data, info);
int dim = info.outWidth;
if (!isWidth)
dim = Math.max(dim, info.outHeight);
int ssize = sampleSize(dim, target);
options = new Options();
options.inSampleSize = ssize;
}
Bitmap bm = null;
try {
bm = decode(path, data, options);
} catch (OutOfMemoryError e) {
L.red(e.toString());
e.printStackTrace();
}
if (round > 0) {
bm = getRoundedCornerBitmap(bm, round);
}
return bm;
}
private static Bitmap decode(String path, byte[] data,
BitmapFactory.Options options) {
Bitmap result = null;
if (path != null) {
result = decodeFile(path, options);
} else if (data != null) {
// AQUtility.debug(“decoding byte[]”);
result = BitmapFactory.decodeByteArray(data, 0, data.length,
options);
}
if (result == null && options != null && !options.inJustDecodeBounds) {
AQUtility.debug(“decode image failed”, path);
文末
当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段
最后祝大家工作升职加薪,面试拿到心仪Offer
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
文末
当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段
最后祝大家工作升职加薪,面试拿到心仪Offer
[外链图片转存中…(img-2iuamWd8-1715793512107)]
[外链图片转存中…(img-9zxVaUoP-1715793512108)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!