Graphics简单汇总

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" >

上图布局文件例如以下

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" >

<?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" >

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" >

<?

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);
		}
	}
}
时间: 2024-10-25 07:37:12

Graphics简单汇总的相关文章

若干排序算法简单汇总(一)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35819279 作者:小马 从题目看,首先不是全部是若干.排序算法很多,我个人的能力也有限,不可能都讲到.另外,是简单汇总,是希望能用最简单的代码,最简短的语言说明问题,不搞太多理论分析. 就像前面说的,排序算法有很多,而且不存在哪一种最不好,哪一种最好这样的说法.根据用途不同选择最适合的就行了.不过仅从时间复杂度来看,基本上有两种,一种是O(n^2), 一种是O(nlogn).

若干排序算法简单汇总(二)

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/36706131 作者:小马 一希尔排序 上一篇讲到的直接插入排序,时间复杂度O(n^2). 请在脑海里想一下它的过程.如果一个序列本来就是有序的,对它排序的时间复杂度是O(n).所以当序列基本有序时,插入排序排序的效率大大提高,因为减少了移动的动作. 另外,直接插入排序还有一个特点,当n比较小时,它的效率比较高. 希尔排序正是基于上面两个思想做的一种改进算法.它先将整个序列分成若干

Animation动画效果简单汇总

------------案例结构很复杂一步步来------------ 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=&q

Javascript基础简单汇总(一):元素获取

在页面脚本中,如果要对页面元素进行操作,那么我们就要获取到这个元素 那么在获取元素之前首先得要了解什么是DOM(document object  model) 在DOM,元素是以节点的形式表示的,每一个节点都是对象,我们平时写的特效也就是修改的节点对象的属性来的,这个就是传说中的DOM操作 而节点树其实也就是元素的父子级关系的树状图而已,所以啊,不要想的太复杂 这个元素节点了原生JS不能直接操作的,只能通过document这个文档对象再去获取 比如我要通过元素ID名获取元素: document.

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

1.显示日期与时间的命令:date 2.显示日历的命令:cal 3.简单好用的计算器:bc 4.热键“命令补全或文件补齐”:Tab 5.热键“中断目前程序”:Ctrl+C 6.热键“键盘输入结束(End of File)相当与输入exit”:Ctrl+D 7.在线求助:man [command]或 info [command],按q退出 8.数据同步写入磁盘:sync 9.关机命令:shutdown -h [now | 10(分钟) | 20:25] 10.重启命令:reboot 11.改变文件

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

这篇文章主要介绍了Python实用日期时间处理方法汇总,本文讲解了获取当前datetime.获取当天date.获取明天/前N天.获取当天开始和结束时间(00:00:00 23:59:59).获取两个datetime的时间差.获取本周/本月/上月最后一天等实用方法 ,需要的朋友可以参考下 原地址:http://www.cnblogs.com/wenBlog/p/6097220.html 原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理 步

CGI,squid,nfs简单汇总

一,cgi 通用网关接口(CGI)是网站上放置动态内容的最简单的方法.CGI脚本可用于许多目 的,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要.编写质量差的CGI 脚本可能为外部攻击者提供了破坏网站及其内容安全性的途径.因此,在Web服务器级别和 SELinux策略级别,都存在用于限制CGI脚本使用的设置. #vim /etc/http/conf.d/default.conf <Directory /var/www/html> Options +ExecCGI AddHa

Linux内存简单汇总

Linux内存主要用来存储系统和应用程序的指令,数据,缓存等 一,内存映射 1,内核给每个进程提供一个独立的虚拟机地址空间,并且这个地址空间是连续的 2,虚拟地址空间内部又被分为内核空间和用户空间 3,32位和64位系统的虚拟地址空间 32 位系统的内核空间占用 1G,位于最高处,剩下的 3G 是用户空间.而 64 位系统的内核空间和用户空间都是 128T,分别占据整个内存空间的最高和最低处,剩下的中间部分是未定义的 4,进程在用户态时,只能访问用户空间内存:只有进入内核态后,才可以访问内核空间

linux命令简单汇总,直通车

curl nohup jobs screen exec   pk    xargs linux 系统日志 kill ntsys    chkconfig crontab     linux  任务日志 netfilter   iptables selinux     getenforce wireshark tcpdump   抓包工具 netstat   - lnp free pid ps aux ps aux | grep  nginx sar top w uptime vmstat 1 p