[Android课堂笔记] 2D Graphic图形绘制全解析

原文来自Coursera课程
Programming Mobile Applications for Android Handheld Systems: Part 2 - Week7 Graphics and Animation

链接:https://class.coursera.org/androidpart2-004/wiki/Week7_Overview

 

关于2D图形界面的绘制,主要有两种选择。一是绘制到View视图,另一个是绘制到Canvas画板。

绘制的对象,我们使用Drawable类来实现。Drawable的含义是可供绘制的事物,比如颜色、形状、图片。

实现的时候,有两种方法,可以通过XML,或者Java编程来实现。以下两个例子都是用于实现一个静态显示在屏幕中央的泡泡。

示例1:GraphicsBubbleXML
实现方法:

//BubbleActivity.java

public class BubbleActivity extends Activity {
	
	@Override
	
	public void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.main);
	}
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_centerInParent="true"
        android:contentDescription="@string/bubble_desc"
        android:src="@drawable/b128" />

</RelativeLayout>

泡泡的图片b128放置在res/drawable-nodpi目录下


示例2:GraphicsBubbleProgram
BubbleActivity.java

<pre class="java" name="code">public class BubbleActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//获取当前的Layout对象
		RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.frame);

		//创建bubbleView对象,并将资源文件中的图片传入到对象中
		ImageView bubbleView = new ImageView(getApplicationContext());
		bubbleView.setImageDrawable(getResources().getDrawable(R.drawable.b128));

		//设置BubbleView的高度和宽度
		//这两个参数单独存放在res/values/dimen.xml文件中
		int width = (int) getResources().getDimension(R.dimen.image_width);
		int height = (int) getResources().getDimension(R.dimen.image_height);

		RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width, height);
		params.addRule(RelativeLayout.CENTER_IN_PARENT);

		//将参数传入bubbleView对象
		bubbleView.setLayoutParams(params);
		//使用Layout.addView()方法将bubbleView对象加入到Layout当中显示
		relativeLayout.addView(bubbleView);
	}
}


 

main.xml 布局文件就只需要定义最外围的Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</RelativeLayout>

dimens.xml

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

    <dimen name="image_width">250dp</dimen>
    <dimen name="image_height">250dp</dimen>

</resources>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值