1、主页面布局文件

activity_main.xml(仅仅有2个button按钮)

<?xml version="1.0" encoding="utf-8"?

>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="testTuPian"
android:text="測试图片处理" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="testDraw"
android:text="測试绘制图形" />
</LinearLayout>

MainActivity.java(启动2个button)

package com.atguigu.l11_graphics;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void testTuPian(View view) {
startActivity(new Intent(this, TuPianTestActivity.class));
}
public void testDraw(View view) {
startActivity(new Intent(this, DrawTestActivity.class));
}
}
2、startActivity(new Intent(this, TuPianTestActivity.class));启动的界面

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzIxMDYyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

上图布局文件例如以下

activity_tupian_test.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick=<span style="color:#ff0000;">"testBD"</span>
android:text="測试Bitmap" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="<span style="color:#ff0000;">testMatrix</span>"
android:text="測试图片的缩放等处理" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="使用Shape做的button"
android:background="@drawable/shape_test"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/image_selector"
android:onClick="<span style="color:#ff0000;">clickIV</span>"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="使用Selector+Shape做的button"
android:background="@drawable/shape_selector"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/test2"
android:text="A NinePatchDrawable graphic is a stretchable bitmap image, which Android will automatically resize to accommodate the contents of the View in which you have placed it as the background. A NinePatch drawable is a standard PNG image that includes an extra" />
</LinearLayout>

TuPianTestActivity.java

package com.atguigu.l11_graphics;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
/*
* 測试操作图片的Activity
*/
public class TuPianTestActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tupian_test);
} public void<span style="color:#ff0000;"> testBD</span>(View v) {
startActivity(new Intent(this, BitmapTestActivity.class));
} public void <span style="color:#ff0000;">testMatrix</span>(View v) {
startActivity(new Intent(this, MatrixTestActivity.class));
} public void <span style="color:#ff0000;">clickIV</span>(View v) {
Toast.makeText(this, "点击了selector", 0).show();
}
}

3、将上图分开来看(从上到下依次展示布局文件或者代码)

3-1、activity_bitmap.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="保存图片"
android:onClick="saveImage"/> <ImageView
android:id="@+id/iv_bitmap1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <ImageView
android:id="@+id/iv_bitmap2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <ImageView
android:id="@+id/iv_bitmap3"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

BitmapTestActivity.java

package com.atguigu.l11_graphics;

import java.io.FileNotFoundException;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView; /*
Bitmap: 载入一张图片数据到内存中, 都能够封装成一个Bitmap对象
需求3: 将一个bitmap对象保存到存储空间中
*/
public class BitmapTestActivity extends Activity { private ImageView iv_bitmap1;
private ImageView iv_bitmap2;
private ImageView iv_bitmap3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bitmap); iv_bitmap1 = (ImageView) findViewById(R.id.iv_bitmap1);
iv_bitmap2 = (ImageView) findViewById(R.id.iv_bitmap2);
iv_bitmap3 = (ImageView) findViewById(R.id.iv_bitmap3); //1: 载入资源文件里的图片资源并显示
iv_bitmap1.setImageResource(R.drawable.ic_launcher); //2: 使用bitmapfactory做--载入资源图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
iv_bitmap2.setImageBitmap(bitmap); //载入存储空间的图片
Bitmap bitmap2 = BitmapFactory.decodeFile("/storage/sdcard/atguigu.png");
iv_bitmap3.setImageBitmap(bitmap2);
} /**
* 讲bitmap对象保存到存储空间去
* /data/data/包名/files/save.png
*/
public void saveImage(View v) {
Bitmap bitmap = BitmapFactory.decodeFile("/storage/sdcard/atguigu.png");
try {
bitmap.compress(CompressFormat.PNG, 100,openFileOutput("save.png", Context.MODE_PRIVATE));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

3-2、activity_matrix.xml

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzIxMDYyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal" > <EditText
android:id="@+id/et_matrix_scale"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:text="0.25" /> <EditText
android:id="@+id/et_matrix_rotate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:text="30" /> <EditText
android:id="@+id/et_matrix_translateX"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:text="10" /> <EditText
android:id="@+id/et_matrix_translateY"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:text="10" />
</LinearLayout> <LinearLayout
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal" > <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:onClick="scaleBitmap"
android:text="缩放" /> <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:onClick="rotateBitmap"
android:text="旋转" /> <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:onClick="translateBitmap"
android:text="移动" /> <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:onClick="clearMatrix"
android:text="还原" />
</LinearLayout> <ImageView
android:id="@+id/iv_matrix_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:scaleType="matrix"/> </LinearLayout>

MatrixTestActivity.java

package com.atguigu.l11_graphics;
import android.app.Activity;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
/*
Matrix 。中文里叫矩阵。高等数学里有介绍。在图像处理方面,主要是用于平面的缩放、平移、旋转等操作 */
public class MatrixTestActivity extends Activity { private EditText et_matrix_scale;
private EditText et_matrix_rotate;
private EditText et_matrix_translateX;
private EditText et_matrix_translateY; private ImageView iv_matrix_icon; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_matrix); et_matrix_scale = (EditText) findViewById(R.id.et_matrix_scale);
et_matrix_rotate = (EditText) findViewById(R.id.et_matrix_rotate);
et_matrix_translateX = (EditText) findViewById(R.id.et_matrix_translateX);
et_matrix_translateY = (EditText) findViewById(R.id.et_matrix_translateY); iv_matrix_icon = (ImageView) findViewById(R.id.iv_matrix_icon);
} /**
* 缩放图片
*/
Matrix matrix = new Matrix();
public void scaleBitmap(View view) {
// 得到缩放比例--float类型
float sacle = Float.parseFloat(et_matrix_scale.getText().toString());
// 对缩放图片对象设置xy轴缩放比例
matrix.postScale(sacle, sacle);
iv_matrix_icon.setImageMatrix(matrix);
}
/**
* 旋转图片
*/
public void rotateBitmap(View view) {
float degrees = Float.parseFloat(et_matrix_rotate.getText().toString());
matrix.postRotate(degrees);
iv_matrix_icon.setImageMatrix(matrix);
} /**
* 移动图片
*/
public void translateBitmap(View view) { float dx = Float.parseFloat(et_matrix_translateX.getText().toString());
float dy = Float.parseFloat(et_matrix_translateY.getText().toString());
matrix.postTranslate(dx, dy);
iv_matrix_icon.setImageMatrix(matrix);
} /**
* 还原操作
*/
public void clearMatrix(View view) {
//清除数据
matrix.reset();
iv_matrix_icon.setImageMatrix(matrix);
}
}

MatrixTestActivity.java

package com.atguigu.l11_graphics;
import android.app.Activity;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
/*
Matrix ,中文里叫矩阵。高等数学里有介绍。在图像处理方面,主要是用于平面的缩放、平移、旋转等操作 */
public class MatrixTestActivity extends Activity { private EditText et_matrix_scale;
private EditText et_matrix_rotate;
private EditText et_matrix_translateX;
private EditText et_matrix_translateY; private ImageView iv_matrix_icon; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_matrix); et_matrix_scale = (EditText) findViewById(R.id.et_matrix_scale);
et_matrix_rotate = (EditText) findViewById(R.id.et_matrix_rotate);
et_matrix_translateX = (EditText) findViewById(R.id.et_matrix_translateX);
et_matrix_translateY = (EditText) findViewById(R.id.et_matrix_translateY); iv_matrix_icon = (ImageView) findViewById(R.id.iv_matrix_icon);
} /**
* 缩放图片
*/
Matrix matrix = new Matrix();
public void scaleBitmap(View view) {
// 得到缩放比例--float类型
float sacle = Float.parseFloat(et_matrix_scale.getText().toString());
// 对缩放图片对象设置xy轴缩放比例
matrix.postScale(sacle, sacle);
iv_matrix_icon.setImageMatrix(matrix);
}
/**
* 旋转图片
*/
public void rotateBitmap(View view) {
float degrees = Float.parseFloat(et_matrix_rotate.getText().toString());
matrix.postRotate(degrees);
iv_matrix_icon.setImageMatrix(matrix);
} /**
* 移动图片
*/
public void translateBitmap(View view) { float dx = Float.parseFloat(et_matrix_translateX.getText().toString());
float dy = Float.parseFloat(et_matrix_translateY.getText().toString());
matrix.postTranslate(dx, dy);
iv_matrix_icon.setImageMatrix(matrix);
} /**
* 还原操作
*/
public void clearMatrix(View view) {
//清除数据
matrix.reset();
iv_matrix_icon.setImageMatrix(matrix);
}
}

3-3、

shape_test.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 半径大小 -->
<corners android:radius="10dp" /> <!-- 边框 -->
<stroke
android:dashGap="2dp"
android:dashWidth="2dp"
android:width="3dp"
android:color="#FF7F00" /> <size
android:height="50dp"
android:width="40dp" />
<!-- 颜色 -->
<solid android:color="#FFD700"></solid> <!-- 覆盖solid -->
<gradient
android:startColor="#ffffff"
android:centerColor="#EE4000"
android:endColor="#ffffff"
android:angle="90"/>
</shape>

3-4、

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzIxMDYyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

image_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 特别的状态放在前面 -->
<item android:drawable="@drawable/main_index_search_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/main_index_search_normal"/>
</selector>

3-5、

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzIxMDYyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

<?

xml version="1.0" encoding="utf-8"?

>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true">
<shape>
<corners android:radius="4dp"></corners>
<stroke android:width="2dp" android:color="#EEAD0E" android:dashWidth="4dp" android:dashGap="2dp"></stroke>
<size android:height="40dp"></size>
<gradient android:startColor="#ffffff" android:centerColor="#ffffff" android:endColor="#E0FFFF"/>
</shape>
</item> <item>
<shape>
<corners android:radius="2dp"></corners>
<stroke android:width="2dp" android:color="#EE7AE9"></stroke>
<size android:height="40dp"></size>
<solid android:color="#E0FFFF"></solid>
</shape>
</item> </selector>

3-6、(9patch图片)

4、startActivity(new Intent(this, DrawTestActivity.class));启动以下图片

DrawTestActivity.java

package com.atguigu.l11_graphics;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.os.Bundle;
import android.view.View;
public class DrawTestActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 显示自己定义视图
setContentView(new MyView(this));
} /**
* 自己定义myview视图
*/
private class MyView extends View {
//成员变量---可画的图形对象
private ShapeDrawable shapeDrawable; public MyView(Context context) {
super(context);
// 初始化一个图形对象---參数是椭圆
shapeDrawable = new ShapeDrawable(new OvalShape());
// 通过椭圆得到画笔,通过画笔设置颜色
shapeDrawable.getPaint().setColor(Color.RED);
// 指定位置left top right bottom
shapeDrawable.setBounds(10, 10, 200, 100);
} // 显示界面视图效果 画布
@Override
protected void onDraw(Canvas canvas) {
//设置画布的颜色
canvas.drawColor(Color.GREEN);
// 将图像画到画布上
shapeDrawable.draw(canvas); //指定画笔
Paint paint = new Paint();
//通过画笔设置颜色
paint.setColor(Color.BLUE);
//设置字体大小
paint.setTextSize(30);
//设置平滑度
paint.setAntiAlias(true);
//在画布上写上字体
canvas.drawText("你好", 10, 200, paint);
}
}
}

Graphics简单汇总的更多相关文章

  1. Python中对时间日期的处理方法简单汇总

    这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个d ...

  2. Linux命令面试常考的简单汇总

    1.显示日期与时间的命令:date 2.显示日历的命令:cal 3.简单好用的计算器:bc 4.热键“命令补全或文件补齐”:Tab 5.热键“中断目前程序”:Ctrl+C 6.热键“键盘输入结束(En ...

  3. Linux内存简单汇总

    Linux内存主要用来存储系统和应用程序的指令,数据,缓存等 一,内存映射 1,内核给每个进程提供一个独立的虚拟机地址空间,并且这个地址空间是连续的 2,虚拟地址空间内部又被分为内核空间和用户空间 3 ...

  4. [computer graphics]简单光照模型(Phong和Blinn-Phong)和明暗处理

    简单光照模型(Phong和Blinn-Phong)和明暗处理 支持点光源和平行光,是一种简单光照模型,它将光照分解成了三个部分,分别为 漫反射 镜面反射 环境光 如图所示,是一个简单的几何模型. \( ...

  5. Openstack架构概念图-简单汇总

    OpenStack是一个云平台管理的项目,它不是一个软件.这个项目由几个主要的组件组合起来完成一些具体的工作.想要了解openstack,第一步我们可以观察他的概念图: 针对上图的翻译+解释: 上图主 ...

  6. Spring常用注解简单汇总

    使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包). <context:component-scan base-package="cn.test&qu ...

  7. sonar阻断级别错误(block)简单汇总

    1.代码里面包含PASSWORD.PWD 'PWD' detected in this expression, review this potentially hardcoded credential ...

  8. HTML5 之 简单汇总

    参考: HTML5的十大新特性 前端面试必备之html5的新特性 HTML5 1.语义化元素 1.1结构元素 标签 描述 article 表示与上下文不相关的独立内容区域 aside 定义页面的侧边栏 ...

  9. 【转】iOS 7免费设计资源汇总

    原文链接:http://mobile.51cto.com/hot-406317.htm#585532-tsina-1-28470-7e393678b940a4d55500bf3feae3d2e9 以下 ...

随机推荐

  1. wcf 代理配置

    <?xml version="1.0" encoding="utf-8"?> <configuration>   <appSett ...

  2. 在下载jar包时,要有三个包,分别为使用的把class、查看文档的api、查看源代码的资源包

    字节码包: spring-webmvc-4.1.6.RELEASE.jar 文档包:    spring-webmvc-4.1.6.RELEASE-javadoc.jar 资源包:    webmvc ...

  3. iOS- Size Class使用教程

    1:它引入了一种新的概念,抛弃传统意义上我们适配时所谓的具体宽高尺寸,把屏幕的宽和高分别分成两种情况:Compact-紧凑, Regular-正常(Any-任意,其实就是这2种的组合,所以我没分成3种 ...

  4. Windows下apache+tomcat负载均衡

    Windows下apache+tomcat负载均衡 网上已经有很多的资料,但是很多都比较零碎,需要整合一起才能搭建出理想的负载均衡,正好前段时间搭建了windows与linux下的负载均衡,在此记录, ...

  5. 【转】Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

  6. mysql外键创建失败原因

    引用:http://blog.csdn.net/wangpeng047/article/details/19624351 首先,如果和外键相关的几张表中已经插入了数据,可能导致外键插入的失败 在MyS ...

  7. mongoDB 删除集合后,空间不释放的解决方法

    mongoDB 删除集合后,空间不释放,添加新集合,没有重新利用之前删除集合所空出来的空间,也就是数据库大小只增不减. 方法有: 1.导出导入 dump & restore 2.修复数据库 r ...

  8. JS高级——沙箱

    基本概念 1.沙箱:与外界隔绝的一个环境,外界无法修改该环境内任何信息,沙箱内的东西单独属于一个世界 2.苹果手的app使用的就是沙箱模式去运行,隔离app的空间,每个app独立运行 js沙箱基本模式 ...

  9. CI框架3.x 之实现前后端分离

    一.建立合理的目录结构 admin与home为后台和前台的控制器和模板文件夹 二.定义前后台视图路径常量 在constants.php中添加如下代码: //定义前台视图路径常量 define('HOM ...

  10. HTML学习笔记之标签进阶

    目录 1.框架 2.表单 3.音频 4.视频 5.文档类型 6.头部元素 7.样式 8.脚本 9.实体 1.框架 使用框架允许我们在同一个浏览器窗口中显示多个页面,其中每份 HTML 文档称为一个框架 ...