网站做好是需要续费的吗,网址登录,用ps做网站还是wd,友链目录网2019独角兽企业重金招聘Python工程师标准 在某些应用中#xff0c;为了实现应用apk资源放入重复利用#xff0c;或者使用反射得到本应用的资源#xff0c;需要使用反射反射方式获得#xff0c;但Resources类中也自带了这种获取方式#xff0c;并且功能更加强… 2019独角兽企业重金招聘Python工程师标准 在某些应用中为了实现应用apk资源放入重复利用或者使用反射得到本应用的资源需要使用反射反射方式获得但Resources类中也自带了这种获取方式并且功能更加强大 你可以获取string,color,drawable,raw,xml等文件因此也就意味着这里可以获取的资源是res中已定义的资源对于控件id的获取暂时无法做到 android.content.res.Resources.class public int getIdentifier(String name, String defType, String defPackage) {if (name null) {throw new NullPointerException(name is null);}try {return Integer.parseInt(name);} catch (Exception e) {// Ignore}return mAssets.getResourceIdentifier(name, defType, defPackage);} 一.获取资源的id 1.如下我们可以获取当前应用的资源id int drawableId mContext.getResources().getIdentifier(ic_launcher,drawable, mContext.getPackageName());mImageView.setImageResource(drawableId); 2.我们也可以获取其他应用的资源id Resources resources context.getResources();
int indentify getResources().getIdentifier(icon, drawable, org.anddev.android.testproject);int resId getResources().getIdentifier(background, color, getPackageName());
startBtn.setTextColor(getResources().getColor(resId)); 对于这种方式我们也可以这么做 int indentify getResources().getIdentifier(org.loveandroid.androidtest:drawable/icon,null,null); 3.进行封装一下 public static int getResourceId(Context context,String name,String type,String packageName){Resources themeResourcesnull;PackageManager pmcontext.getPackageManager();try {themeResourcespm.getResourcesForApplication(packageName);return themeResources.getIdentifier(name, type, packageName);} catch (NameNotFoundException e) {e.printStackTrace();}return 0;} 二.获取资源的uri android系统中应用的资源存储时也通常会被存入 数据库也可以被共享因此来说资源会获得应用的uri Uri uri Uri.parse(android.resource://getPackageName()/R.raw.xinyueshenhua);
Uri uri Uri.parse(android.resource://getPackageName()/R.drawable.ic_launcher); 我们也可以进一步封装 public static Uri getResourceUri(int resId,String packageName)
{return Uri.parse(android.resource://packageName/resId);
} 比如获取图片 Uri mImageCaptureUri data.getData();
Bitmap photoBmp null;
if (mImageCaptureUri ! null) {photoBmp MediaStore.Images.Media.getBitmap(ac.getContentResolver(), mImageCaptureUri);
} 或如下方式 /** * 通过uri获取图片并进行压缩 * * param uri */ public static Bitmap getBitmapFormUri(Activity ac, Uri uri) throws FileNotFoundException, IOException { InputStream input ac.getContentResolver().openInputStream(uri); BitmapFactory.Options onlyBoundsOptions new BitmapFactory.Options(); onlyBoundsOptions.inJustDecodeBounds true; onlyBoundsOptions.inDither true;//optional onlyBoundsOptions.inPreferredConfig Bitmap.Config.ARGB_8888;//optional BitmapFactory.decodeStream(input, null, onlyBoundsOptions); input.close(); int originalWidth onlyBoundsOptions.outWidth; int originalHeight onlyBoundsOptions.outHeight; if ((originalWidth -1) || (originalHeight -1)) return null; //图片分辨率以480x800为标准 float hh 800f;//这里设置高度为800f float ww 480f;//这里设置宽度为480f //缩放比。由于是固定比例缩放只用高或者宽其中一个数据进行计算即可 int be 1;//be1表示不缩放 if (originalWidth originalHeight originalWidth ww) {//如果宽度大的话根据宽度固定大小缩放 be (int) (originalWidth / ww); } else if (originalWidth originalHeight originalHeight hh) {//如果高度高的话根据宽度固定大小缩放 be (int) (originalHeight / hh); } if (be 0) be 1; //比例压缩 BitmapFactory.Options bitmapOptions new BitmapFactory.Options(); bitmapOptions.inSampleSize be;//设置缩放比例 bitmapOptions.inDither true;//optional bitmapOptions.inPreferredConfig Bitmap.Config.ARGB_8888;//optional input ac.getContentResolver().openInputStream(uri); Bitmap bitmap BitmapFactory.decodeStream(input, null, bitmapOptions); input.close(); return compressImage(bitmap);//再进行质量压缩 } 三.获取系统资源 int indentify getResources().getIdentifier(actionbar_bg, drawable,android); //注意最后一个参数必须是“android” 转载于:https://my.oschina.net/ososchina/blog/353692