安卓 Drawable 转 bitmap

本人将后缀为png的图片放在res->drawable-hdpi下。现在想将其转换为bitmap然后作其他处理,看到网上很多的文章。
方法1------------------------------------
Resources res=getResources();
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.a);
Log.i(TAG, "2222"+bmp);

方法2------------------------------------
Drawable drawable = getResources().getDrawable(R.drawable.a);
Bitmap bitmap = MainActivity.drawableToBitmap(drawable);
Log.i(TAG, "1111"+drawableToBitmap(drawable));

public static Bitmap drawableToBitmap(Drawable drawable)
{
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity() != PixelFormat.OPAQUE? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0,0,width,height);
drawable.draw(canvas);
return bitmap;

}

打印出的log信息为
2222android.graphics.Bitmap@41069968
1111android.graphics.Bitmap@41069d98

---------------------------------
我很想知道这两种方法有什么区别,查看api后,我的猜测是,第2种方法可以将各种格式的图片转换为bitmap,第1种方法只能将某些格式的图片转换为bitmap。

很菜,很迷惑。求指导

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android 中怎么讲drawable无损的转换成成String啊?
在网上搜索,全都是一个样: /** * 图片转换成字符串 * * @param drawable * @return */ public String drawableToByte(Drawable drawable) { if (drawable != null) { 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); int size = bitmap.getWidth() * bitmap.getHeight() * 4; // 创建一个字节数组输出流,流的大小为size ByteArrayOutputStream baos = new ByteArrayOutputStream(size); // 设置位图的压缩格式,质量为100%,并放入字节数组输出流中 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); // 将字节数组输出流转化为字节数组byte[] byte[] imagedata = baos.toByteArray(); String icon = Base64.encodeToString(imagedata, Base64.DEFAULT); return icon; } return null; } 但是这样转换后图片丢失很多像素,如果反复的压缩几次的话,图片就变成马赛克,最后就不能正常显示了。 有没有好的方法将一个drawable转换成String啊?
android 怎么把bitmap转成notification icon
想调用assest里面的图片,是bitmap类型,想给通知栏使用,但通知栏需要的是drawable类型或者int 类型,怎么转化。 求大神 大神!!
android bitmap加载图片,然后涂鸦,实现橡皮擦功能
bitmap_temp = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888); @Override public void onDraw(Canvas canvas) { canvas.drawBitmap(mBitmap, 0, 0, null); } mPaint.setAlpha(0); mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); 用这种方法是可以实现画图的功能 但是当我用bitmap加载sdcard里的图片,再调用橡皮擦时,橡皮擦画出的都是黑色的,也达不到擦除的效果。 Drawable drawable = Drawable.createFromPath(temp.getPath()); mBitmap = ((BitmapDrawable) drawable).getBitmap().copy( Bitmap.Config.ARGB_8888, true); 希望大家帮一下忙,谢谢!
Android ViewGroup 图片内存回收问题
小弟在网上看到一篇将ViewGroup中图片内存回收的文章,但是有一些疑问 链接是http://hi.baidu.com/jwq359699768/item/c80c9cf3bcd1cbc0a835a2a6 代码是: private void recycleBitmap( ) { if(viewGroup != null) { int count = viewGroup.getChildCount; for(int i=0; i <count; i++ ) { View view = viewGroup.getChildAt(i); ImageView img = (ImageView)view.findViewById(R.id.Image); if(img != null) { Drawable drawable = img.getDrawable( ); if(drawable != null) { if(drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable; Bitmap bitmap = bitmapDrawable.getBitmap( ); if(bitmap != null) bitmap.recycle( ); } } } } } } 其中ImageView img = (ImageView)view.findViewById(R.id.Image);这句话将取得的第i个View中的图片通过findViewById的方法取出来,但是这个View中的ImageView的Id是怎么得知的呢?
radiobutton 用bitmap做背景,radiobutton切换时残留横线
![图片说明](https://img-ask.csdn.net/upload/201606/12/1465712345_558066.png) radiobutton的selector是这样的: ``` <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bg_bitmap1" android:state_checked="false"></item> <item android:drawable="@drawable/bg_bitmap" android:state_checked="true"></item> </selector> ``` bg_bitmap1如下: ``` <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:gravity="center" android:src="@drawable/redd"//bg_bitmap此处颜色不同的图片 android:tileMode="disabled" > </bitmap> ``` 当切换时,出现如上图 默认选项上残留一条红线情况是怎么回事
用android openGL ES2.0 显示bitmap时如果想要动态更换bitmap怎样实现?
之前尝试同一个texture ID先后绑定不同bitmap的方法 失败了,显示在屏幕上的还是原来的bitmap。 我想问一下想要更换一个bitmap是否要重新调用以下方法重新生成一个texture?还是有更好的方法? 1. glGenTexture 2. glBindTexture 3.texImage2D 求大神赐教!!! ---------------------------------------------- 以下是我用来更换texture所显示bitmap的函数(函数不能用) void refreshBitmap(){ index=(index+1)%10+1; BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bitmap; switch(index){ case 1:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame1, options); break; } case 2:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame2, options); break; } case 3:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame3, options); break; } case 4:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame4, options); break; } case 5:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame5, options); break; } case 6:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame6, options); break; } case 7:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame7, options); break; } case 8:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame8, options); break; } case 9:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame9, options); break; } case 10:{ bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame10, options); break; } default: { bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.frame1, options); break; } } System.out.println("shit!!"+texture); glBindTexture(GL_TEXTURE_2D, texture); //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); //放大缩小使用的函数 //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); texImage2D(GL_TEXTURE_2D, 0, bitmap, 0); glGenerateMipmap(GL_TEXTURE_2D); //glBindTexture(GL_TEXTURE_2D, 0); bitmap.recycle(); mySurfaceView.requestRender(); } ``` ```
android:用Bitmap+Canvas画出来的东西,有的能打印有的不能打印
下面这段代码目的是想把图片、文字等打印在一张创建的背景图上。怎么有的能打印出来有的不能?请问要怎么做才能把要打印的都打印上去? public void DrawImage() { /*建立画布,画笔,位图初始化*/ bitmap = Bitmap.createBitmap(xp_width, xp_height, Bitmap.Config.ARGB_8888); canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); paint = new Paint(); paint.setTextSize(5); /*花两边的圆孔 能打印*/ canvas.drawColor(Color.rgb(223, 233, 235)); for (int y = 5; y < xp_height - 5; y++) { canvas.drawOval(10, y, 24, y + 14, paint); canvas.drawOval(495, y, 509, y + 14, paint); y = y + 27; } /*把头部信息打印在背景图上 能打印*/ bitmap_top = BitmapFactory.decodeResource(getResources(), R.drawable.lishua_top); // 指定图片绘制区域 Rect src_top = new Rect(0, 0, bitmap_top.getWidth(), bitmap_top.getHeight()); // 指定图片在屏幕上显示的区域,四个点的坐标 Rect dst_top = new Rect(45, 15, 475, 55); canvas.drawBitmap(bitmap_top, src_top, dst_top, paint); Log.d("xg", "this is do top"); /*把印章信息打印在背景图上 不能打印*/ bitmap_mark = BitmapFactory.decodeResource(getResources(), R.drawable.lakala_top); // 指定图片绘制区域 Rect src_mark = new Rect(0, 0, bitmap_mark.getWidth(), bitmap_mark.getHeight()); // 指定图片在屏幕上显示的区域,四个点的坐标 Rect dst_mark = new Rect(280, 595, 485, 570); //canvas.rotate(); canvas.drawBitmap(bitmap_mark, src_mark, dst_mark, paint); /* 能打印*/ canvas.drawLine(100,100,200,200,paint); /* 不能打印*/ canvas.drawPoint(100,100,paint); imageView.setImageBitmap(bitmap);
如何设置 Bitmap 图像为圆角的?
如图的图像: ![CSDN移动问答][1] tile_mode.xml <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/background" android:tileMode="repeat"> </bitmap> the back.xml <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/tile_mode" /> <item> <shape> <solid/> <stroke android:width="1dip" android:color="#225786" /> <corners android:radius="10dip"/> <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" /> </shape> </item> layout.xml <LinearLayout android:id="@+id/frame1" android:background="@drawable/back" android:layout_width="fill_parent" android:layout_height="wrap_content"> </LinearLayout> 我在布局中设置了图像作为背景,画了一个边界。但是问题是背景图像是方形的,而图像的边界我在xml中设置的是圆角的。那么如何让图像也变成圆角的呢? [1]: http://i.stack.imgur.com/P0j9S.jpg
如何在按钮上设置一个 bitmap?
我问一个简单的问题,如何在按钮上设置一个bitmap?当有 drawable resource 时,我使用下面的方法: .setBackgroundResource(int resid) 如何处理 bitmap 呢?
Imageview进行了recycle()之后再次打开加载同一图片遇到闪退
如题,由于优化内存,进行了bitmap.recycle,但是再次打开加载同一个activity的时候闪退。activity在finish的时候已经recycle,而且没有其他地方引用,居然会闪退。希望有更好的方法。求助,谢谢。代码如下:(setName之类的已经在merge中建立和声明) import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.ImageView; public class DetailYS extends merge { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.merge); setName(" ys", Color.rgb(255,255,255)); setBirthday(""); setPhone(""); setEmail(""); setUni(""); setPhoto(R.drawable.yangshun); findViewById(R.id.floatingActionButtonCall).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DetailYS.this.onDestroy(); Intent intent = new Intent(DetailYS.this,MainActivity.class); startActivity(intent); } }); } @Override protected void onDestroy(){ super.onDestroy(); ImageView imageView = findViewById(R.id.app_bar_image); if(imageView!=null){ Drawable drawable = imageView.getDrawable(); if(drawable!=null){ if (drawable instanceof BitmapDrawable){ BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable; Bitmap bitmap = bitmapDrawable.getBitmap(); if(bitmap!=null && !bitmap.isRecycled()){ bitmap.recycle(); } } } } DetailYS.this.finish(); } public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode== KeyEvent.KEYCODE_BACK){ DetailYS.this.finish(); Intent intent = new Intent(DetailYS.this,MainActivity.class); startActivity(intent); } return true; } } ``` ```
传递ImageView数组到bitmap
如题,如何传递? ImageView数组: private Integer[] Imgid = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3, R.drawable.pic4, }; Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),**R.drawable.pic1[]???**);
ImageView bitmap size exceeds VM budget
我在一个activity中为一个ImageView设置了从asset中读取出来的图片,ImageView..setImageDrawable(Drawable.createFromStream(getResources() .getAssets().open("xxx.png"), "")); 图片一般200-500k,第一次显示正常,在模拟器上backpress再进入这个activity时,上一句会出现异常bitmap size exceeds VM budget。 ImageView我声明为 成员变量。 在onDestroyView时,我从根view遍历,把所有view的background drawable调用了setCallback(null). ImageView获取了getDrawable()调用了setCallback(null),仍然会出现异常。 如果我在获取的drawable为BitmapDrawable时调用recycle(),再次进入又会出现try to use recycled bitmap。
在内存中的bitmap中添加text
我想从资源中获得一个bitmap,然后再添加一个text文本,然后返回到该方法的调用函数 它看起来像 Canvas方法,但是下面的代码不能运行。 public Bitmap annotateBmp(String storyId) { Bitmap b = BitmapFactory.decodeResource(m_Context.getResources(), R.drawable.candle_android_pin_512); Canvas c = new Canvas(b); Paint p = new Paint(); p.setColor(R.color.red); c.drawText("Do you see this?", 30, 210, p); return b; } 大家还能提供更好的解决方法吗?
recycled bitmap android
android代码中的问题,注不是imagview的回收问题是textview的回收问题 java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@2e09f030 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1282) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.graphics.Canvas.drawBitmap(Canvas.java:1416) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:539) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.widget.TextView.onDraw(TextView.java:5414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15305) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15214) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.drawChild(ViewGroup.java:3414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3205) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15308) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15214) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.drawChild(ViewGroup.java:3414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3205) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15212) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.drawChild(ViewGroup.java:3414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3205) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15212) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.drawChild(ViewGroup.java:3414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3205) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15212) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.drawChild(ViewGroup.java:3414) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3205) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.View.draw(View.java:15308) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.widget.FrameLayout.draw(FrameLayout.java:598) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2674) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2779) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl.draw(ViewRootImpl.java:2685) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2425) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2048) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1105) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6204) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:799) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.Choreographer.doCallbacks(Choreographer.java:612) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.Choreographer.doFrame(Choreographer.java:581) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:714) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.os.Looper.loop(Looper.java:135) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5669) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at java.lang.reflect.Method.invoke(Native Method) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at java.lang.reflect.Method.invoke(Method.java:372) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 08-29 15:43:52.889 26558-26558/com.BDB.bdbconsumer W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
canvers:trying to use a recycled bitmap
错误码:Android: ImageLoader canvers:trying to use a recycled bitmap 用了ImageLoader加载框架加载一张网络图片,bitmap获取到后赋值一次后就被回收了。 ![图片说明](https://img-ask.csdn.net/upload/201608/18/1471509526_188783.png) 看到网上说 : 通过XML给控件设置的Drawable最好不要recycle(),除非该Drawable只使用一次。 但是这句话我没理解该怎么做。
如何使用bitmap增加图像的高度和宽度?
我创建了一个类名称是 ImageLoader,使用内存缓存来存储从 web 中解析的所有的图片,使用 DisplayImage 方法传递 url,布局中的 imageview 来显示 image。 问题是我想增加图像的高度和宽度,我从布局中来添加,但是没有实现。 public void DisplayImage(String url, ImageView imageView) { list_of_image = new ArrayList<Drawable>(); imageViews.put(imageView, url); Bitmap bitmap=memoryCache.get(url); if(bitmap!=null) { imageView.setImageBitmap(bitmap); ///list_of_image.add(new BitmapDrawable(bitmap2)); } else { queuePhoto(url, imageView); imageView.setImageResource(stub_id); } } 什么问题呢?
获取res文件夹中的jpg文件ID
在res文件夹中有自动生成的drawable-hdpi文件夹, 其中有一个jpeg.文件。我先要获取它的ID时参考资料上写"R.drawable.myimage" ,我用完后报错误: **"cannot be resolved to a variable"** 代码: import android.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.View; public class MyCanvas extends View{ Bitmap bmp; public MyCanvas(Context context) { super(context); BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inJustDecodeBounds = true; bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.85849); } } jpg文件的名臣是85849
android中radio button居中对齐的问题
我使用以下代码动态的生成了 RadioButtons: RadioButton radioButton=new RadioButton(context); LayoutParams layoutParams=new LayoutParams(radioWidth,radioHeight); layoutParams.gravity=Gravity.CENTER; radioButton.setLayoutParams(layoutParams); radioButton.setGravity(Gravity.CENTER); BitmapDrawable bitmap = ((BitmapDrawable)drawableResource); bitmap.setGravity(Gravity.CENTER); radioButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.itabs_radio)); radioButton.setButtonDrawable(bitmap); 由以上代码看出我一直在设置按钮的位置,想把它们放在布局的中间。但是不知道什么原因,按钮可以排列在中间,但是左对齐。以下是android中radio button的默认格式: <style name="Widget.CompoundButton"> <item name="android:focusable">true</item> <item name="android:clickable">true</item> <item name="android:textAppearance">?android:attr/textAppearance</item> <item name="android:textColor">?android:attr/textColorPrimaryDisableOnly</item> <item name="android:gravity">center_vertical|left</item> </style> <style name="Widget.CompoundButton.RadioButton"> <item name="android:background">@android:drawable/btn_radio_label_background</item> <item name="android:button">@android:drawable/btn_radio</item> </style> 我用什么方法可以把所有的按钮按竖排排列,并都居中对齐呢?
Android 自定义ImageView出现的问题
package com.qnear.wechat; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; 这是自定义的类 来源:http://www.cnblogs.com/goagent/p/5159126.html public class ImageViewPlus extends ImageView { private Paint mPaintBitmap = new Paint(Paint.ANTI_ALIAS_FLAG); private Bitmap mRawBitmap; private BitmapShader mShader; private Matrix mMatrix = new Matrix(); public ImageViewPlus(Context context, AttributeSet attrs) { super(context,attrs); } @Override protected void onDraw(Canvas canvas){ Bitmap rawBitmap = getBitmap(getDrawable()); if(rawBitmap!=null){ int viewWidth = getWidth(); int viewHeight = getHeight(); int viewMinSize = Math.min(viewWidth, viewHeight); float dstWidth = viewMinSize; float dstHeight = viewMinSize; if(mShader==null||!rawBitmap.equals(mRawBitmap)){ mRawBitmap = rawBitmap; mShader = new BitmapShader(mRawBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); } if(mShader!=null){ mMatrix.setScale(dstWidth/rawBitmap.getWidth(),dstHeight/rawBitmap.getHeight()); mShader.setLocalMatrix(mMatrix); } mPaintBitmap.setShader(mShader); float radius =viewMinSize/2.0f; canvas.drawCircle(radius,radius,radius,mPaintBitmap); }else{ super.onDraw(canvas); } } private Bitmap getBitmap(Drawable drawable) { if(drawable instanceof BitmapDrawable){ return ((BitmapDrawable) drawable).getBitmap(); }else if(drawable instanceof ColorDrawable){ Rect rect = drawable.getBounds(); int width = rect.right - rect.left; int height = rect.bottom - rect.top; int color = ((ColorDrawable) drawable).getColor(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.drawARGB(Color.alpha(color),Color.red(color),Color.blue(color),Color.green(color)); return bitmap; }else{ return null; } } } 这是引用语句: <com.qnear.wechat.ImageViewPlus android:layout_width="150dp" android:layout_height="150dp" android:src="@drawable/mwinbag" android:scaleType="centerInside" android:layout_marginTop="146dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> 然后我就遇到了这个问题: ![图片说明](https://img-ask.csdn.net/upload/201612/22/1482385305_296726.png)![图片说明](https://img-ask.csdn.net/upload/201612/22/1482385317_826178.png) 一个显示正常,一个黑屏
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
redis分布式锁,面试官请随便问,我都会
文章有点长并且绕,先来个图片缓冲下! 前言 现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。 说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢? 实现要点 互斥性,同一时刻,智能有一个客户端持有锁。 防止死锁发生,如果持有锁的客户端崩溃没有主动释放锁,也要保证锁可以正常释...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Java世界最常用的工具类库
Apache Commons Apache Commons有很多子项目 Google Guava 参考博客
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
立即提问