Android

用包名启动 app #

Intent intent = getPackageManager().getLaunchIntentForPackage(packname); startActivity(intent);

定义SharedPreferences #

SharedPreferences preferences = context.getSharedPreferences(name, Context.MODE_PRIVATE);

获取当前Activity #

public class ActivityManager {
    private static volatile ActivityManager instance;
    private WeakReference<Activity> mCurrentActivity;

    private ActivityManager() {
    }

    public static ActivityManager getInstance() {
        if (instance == null) {
            synchronized (ActivityManager.class) {
                if (instance == null) {
                    instance = new ActivityManager();
                }
            }
        }
        return instance;
    }

    public Activity getCurrentActivity() {
        return mCurrentActivity != null ? mCurrentActivity.get() : null;
    }

    public void setCurrentActivity(@Nullable Activity activity) {
        mCurrentActivity = new WeakReference<>(activity);
    }
}

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) {

            }

            @Override
            public void onActivityStarted(@NonNull Activity activity) {

            }

            @Override
            public void onActivityResumed(@NonNull Activity activity) {
                ActivityManager.getInstance().setCurrentActivity(activity);
            }

            @Override
            public void onActivityPaused(@NonNull Activity activity) {
                ActivityManager.getInstance().setCurrentActivity(null);
            }

            @Override
            public void onActivityStopped(@NonNull Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {

            }

            @Override
            public void onActivityDestroyed(@NonNull Activity activity) {

            }
        });
    }
}

参考 #

  1. # 关于获取当前Activity的一些思考
  2. # Android中获取当前正在显示的Activity实例

判断主线程 #

方法一 #

public boolean isMainThread() {
    return Looper.getMainLooper() == Looper.myLooper();
}

方法二 #

public boolean isMainThread() {
    return Looper.getMainLooper().getThread() == Thread.currentThread();
}

方法三 #

public boolean isMainThread() {
    return Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId();
}

RecyclerView初始化(横向布局) #

mRvBackgroundList = view.findViewById(R.id.rv_background_list);
mRvBackgroundList.setLayoutManager(new LinearLayoutManager(view.getContext(),
		LinearLayoutManager.HORIZONTAL, false));
mRvBackgroundList.addItemDecoration(new HorizontalItemDecoration(getResources()
		.getDimensionPixelSize(R.dimen.base_size_level28)));

网格布局 #

mRvCameras = findViewById(R.id.rv_camera_settings);
GridSpaceItemDecoration gridSpaceItemDecoration = new GridSpaceItemDecoration(SPAN_COUNT, RecyclerView.VERTICAL,
		getResources().getDimensionPixelSize(R.dimen.base_size_level60),
		getResources().getDimensionPixelSize(R.dimen.base_size_level30));
mRvCameras.addItemDecoration(gridSpaceItemDecoration);
mRvCameras.setLayoutManager(new GridLayoutManager(getContext(), SPAN_COUNT));
mRvCameras.setAdapter(mAdapter);

打印堆栈信息 #

Thread.dumpStack();

创建纯色bitmap #

private Bitmap mockBitmap() {
	Bitmap bitmap = Bitmap.createBitmap(280, 280, Bitmap.Config.ARGB_8888);
	bitmap.eraseColor(Color.parseColor("#FF0000"));
	return bitmap;
}

Bitmap 转 Drawable #

Drawable bitmap2Drawable(Bitmap bitmap) {  
	return new BitmapDrawable(bitmap);  
}

Drawable 转 Bitmap #

Bitmap drawable2Bitmap(Drawable drawable) {  
	if (drawable instanceof BitmapDrawable) {  
		return ((BitmapDrawable) drawable).getBitmap();  
else if (drawable instanceof NinePatchDrawable) {  
		Bitmap bitmap = Bitmap  
				.createBitmap(  
						drawable.getIntrinsicWidth(),  
						drawable.getIntrinsicHeight(),  
						drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
								 : Bitmap.Config.RGB_565);  
		 Canvas canvas = new Canvas(bitmap);  
		 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),  
				 drawable.getIntrinsicHeight());  
		 drawable.draw(canvas);  
		 return bitmap;  
else {  
		 return null;  
	 }  
 }

判断横竖屏 #

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
	// 竖屏
} else {
	// 横屏
}

字符串Base64编码为String #

public static String encodeBitmapToString(Bitmap bitmap) {
	if (bitmap == null) {
		return "";
	}
	ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
	bitmap.compress(bitmap.hasAlpha() ? Bitmap.CompressFormat.PNG : Bitmap.CompressFormat.JPEG, 100, outputStream);
	// Base64.NO_WRAP is used to eliminate '\n' in encoded string
	return Base64.encodeToString(outputStream.toByteArray(), Base64.NO_WRAP);
}