Android开发使用Drawable绘制圆角与圆形图案功能示例
本文实例讲述了Android开发使用Drawable绘制圆角与圆形图案功能。分享给大家供大家参考,具体如下:
1.创建类RoundCircleDrawable继承Drawable
/** *圆角矩形 *@ProjectApp_View *@Packagecom.android.view.drawable *@authorchenlin *@version1.0 *@Date2016年4月21日 *@NoteTODO */ publicclassRoundCircleDrawableextendsDrawable{ privatePaintmPaint;//画笔 privateintmWidth;//图片宽与长度的最小值 privateintmRadius;//半径 privateintmRound;//圆角 privateRectFmRectF;//矩形 privateBitmapmBitmap;//图片 privateTypemType=Type.TYPE_ROUND;//默认是矩形 //设置类型 enumType{ TYPE_ROUND,TYPE_CICLE; } publicRoundCircleDrawable(Bitmapbitmap){ this.mBitmap=bitmap; //初始化画笔 mPaint=newPaint(); mPaint.setAntiAlias(true); BitmapShadershader=newBitmapShader(mBitmap,TileMode.CLAMP,TileMode.CLAMP); mPaint.setShader(shader); mWidth=Math.min(mBitmap.getWidth(),mBitmap.getHeight()); mRadius=mWidth/2; } /** *向外提供设置图片类型的方法 *@paramtype */ publicvoidsetType(Typetype){ this.mType=type; } /** *暴露给外面设置圆角的大小 * *@paramround */ publicvoidsetRound(intround){ this.mRound=round; } @Override publicvoidsetBounds(intleft,inttop,intright,intbottom){ super.setBounds(left,top,right,bottom); mRectF=newRectF(left,top,right,bottom); } @Override publicvoiddraw(Canvascanvas){ if(mType==Type.TYPE_ROUND){ canvas.drawRoundRect(mRectF,mRound,mRound,mPaint); }else{ canvas.drawCircle(mWidth/2,mWidth/2,mRadius,mPaint); } } @Override publicintgetIntrinsicWidth(){ if(mType==Type.TYPE_CICLE){ returnmWidth; }else{ returnmBitmap.getWidth(); } } @Override publicintgetIntrinsicHeight(){ if(mType==Type.TYPE_CICLE){ returnmWidth; }else{ returnmBitmap.getHeight(); } } @Override publicvoidsetAlpha(intalpha){ mPaint.setAlpha(alpha); } @Override publicvoidsetColorFilter(ColorFiltercf){ mPaint.setColorFilter(cf); } @Override publicintgetOpacity(){ returnPixelFormat.TRANSLUCENT; } }
2.实现方法
publicclassRoundActivityextendsActivity{ privateImageViewmImageView; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_round_drawable); mImageView=(ImageView)findViewById(R.id.iv_round); Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.drawable.aa); //RoundImageDrawabledrawable=newRoundImageDrawable(bitmap); //drawable.setRound(30); RoundCircleDrawabledrawable=newRoundCircleDrawable(bitmap); drawable.setRound(50); mImageView.setImageDrawable(drawable); } }
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。