1、引言
上一篇文章已经介绍了使用bitmap对象生成图片,但android中不仅仅可以直接使用bitmap对象生成图片,也能借助bitmap对象将布局文件转化为图片,实际应用时,我们需要将两者结合起来,只有这样才能生成更加绚丽的图片样式,接下来我就再演示一种使用bitmap直接生成三角形的案例,同时也附加将布局文件生成图片的方法,希望能对大家有所帮助。
2、实现步骤
2.1、bitmap生成三角形原理
这里我以生成等腰直角三角形为例,使用bitmap对象生成三角形可以把所有三角形转化为直角三角形的方式直接或间接生成,其中钝角三角形可以转化为一个直角三角形减去一个直角三角形的方式生成,锐角三角形可以转化为两个直角三角形结合的形式,然后借助相似三角形原理绘制成实心。
2.2、实现代码
/**
* 绘制等腰三角形
*/
private void draw_isosceles_triangle(){
//绘制三角形,把所有三角形当做直角三角形变形所得,然后根据垂直边按照比例绘制成实心或者只绘制边
//1、绘制等腰直角三角形
Bitmap customBitmap = Bitmap//通过控制每一个像素点生成bitmap对象,可以用这种方式生成图片
.createBitmap(300, 300, Bitmap.Config.ARGB_8888);//按像素设置
//以y轴为参照向上绘制垂足坐标(0,400),上顶点坐标是(0,100),右顶点坐标是(300,400)
int i,j;//bitmap对象中坐标轴方向:x坐标从左到右,y坐标从上到下
for (j = 0; j < 300; j++) {
for (i = 0; i < 300-j; i++) {//绘制向上的边和向右的边
customBitmap.setPixel(j,i+j,Color.parseColor("#f06292"));
}
}
iv_custom.setImageBitmap(customBitmap);
saveBitmap(customBitmap);
}
2.3、布局文件转化为图片
布局文件生成图片一定要等界面加载完成后再获取,避免获取到的视图尺寸为0,下面是实现获取一个布局并测定尺寸的方式:
/**
* 保存布局为图片
*/
private void saveLayout(){
View view = LayoutInflater.from(CreateBitmapActivity.this)
.inflate(R.layout.activity_create_bitmap, null, false);
//计算设备分辨率
WindowManager manager = CreateBitmapActivity.this.getWindowManager();
DisplayMetrics metrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
//测量使得view指定大小
int measureWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
int measureHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.AT_MOST);
view.measure(measureWidth, measureHeight);
//调用layout方法布局后,可以得到view的尺寸
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
Bitmap.Config.ARGB_8888);//设置位图背景透明色,只有jpg不支持透明色,要用png
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);//设置画布背景透明色
view.draw(canvas);
saveBitmap(bitmap);//保存为图片
}
2.4、补充说明
上面获取布局文件的方式中使用了图片保存方法,这个方法就是我的上一篇文章中提供的方法,这里就不展示了。
3、视频效果演示
这里的效果演示包含了bitmap对象直接绘制图片和将布局文件转化为图片的视频演示效果。
android中使用代码生成图片