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

来源:互联网 发布:cad看图软件 编辑:程序博客网 时间:2024/05/19 13:23

原文来自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.javapublic class BubbleActivity extends Activity {@Overridepublic 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 {@Overridepublic 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>




0 0
原创粉丝点击