zoukankan      html  css  js  c++  java
  • android前台渲染图片

    android前台渲染,主要是重写view的ondraw方法,在canvas里操作

    自定义MyView类

    package com.ssln;
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class MyView extends View {
    
        private Bitmap bitmap;        //图片
        private Paint paint;        //画笔
        public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            initBitmap();
        }
    
        /**
         * 初始化信息
         */
        public void initBitmap()
        {
            //实例化画笔
             paint=new Paint();
             
             //从资源中加载
             bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img);
        }
    
        @SuppressLint("DrawAllocation")
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            paint.setAntiAlias(true);        //开启抗锯齿
            paint.setColor(Color.BLACK);    //设置画笔颜色
            paint.setTextScaleX(15);        //设置文字大小
            canvas.drawBitmap(bitmap, 10,10, paint); //在10x10的位置画图片
            canvas.save();                    //保存画布状态
            
            Matrix m1=new Matrix();            //矩阵
            m1.setTranslate(500, 10);        //平移 X500 Y10
            Matrix m2=new Matrix();    
            m2.setRotate(15);                //旋转15°
            Matrix m3=new Matrix();            
            m3.setConcat(m1, m2);            //合并矩阵
            m1.setScale(0.8f, 0.8f);        //设置缩放比例
            m2.setConcat(m3, m1);            //合并
            canvas.drawBitmap(bitmap, m2, paint);  //画图,经过了平移,旋转,缩放
            canvas.restore();                //恢复画布状态
            canvas.save();
            paint.setAlpha(180);            //设置透明度
            m1.setTranslate(200, 100);
            m2.setScale(1.3f, 1.3f);
            m3.setConcat(m1, m2);
            canvas.drawBitmap(bitmap, m3, paint);  //画图,经过了平移,缩放
            paint.reset();                  //重置画笔
            canvas.restore();
            paint.setTextSize(24);
            paint.setColor(Color.BLACK);
            canvas.drawText("图片宽度:"+bitmap.getWidth(), 20,240, paint); //写文字,图像的宽度
            canvas.drawText("图片高度:"+bitmap.getHeight(), 20,270, paint);
            paint.reset();
        
        }
     
    
    }

    修改activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.ssln.MainActivity" >
    
        <com.ssln.MyView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
             />
    </RelativeLayout>

     运行效果如下

  • 相关阅读:
    Axis2 1.7.4构建项目
    MyBatis之传入参数
    eclipse快捷键
    WEB-INF目录下的jsp页面如何访问?
    web-content和web-info目录问题
    http响应报文和http请求报文 详细信息
    极光推送知识点2
    极光推送别名、标签怎么理解
    推送的通知和自定义消息区别
    个推
  • 原文地址:https://www.cnblogs.com/alwaysfirst/p/4002800.html
Copyright © 2011-2022 走看看