zoukankan      html  css  js  c++  java
  • andriod绘制图形

     使用view画图,有两个重要的组件需要介绍:
      (1)Paint 可以理解为画刷或者画笔,去主要用来设置绘图使用的颜色、填充方式、透明度、字体以及字体样式等。
      (2)Canvas 画布,在view上显示的图形都是由canvas来绘制的,可以绘制矩形、圆、椭圆、扇形……。

      Paint常见方法与属性:
      (1)Paint.Style.FILL 用颜色填充图形
      (2)Paint.Style.FILL_AND_STROKE 即绘制边框 同时也填充内部
      (3)Paint.Style.STROKE 绘制边框
      (4)paint.setAntiAlias(true)这个是用来设置抗锯齿效果的。

    一、设计界面

      1、布局文件

      我们使用自定义GraphicsView类作为布局,继承自View。
      因此,不需要布局文件。

    package com.example.yanlei.wifi;
    
    import android.content.Context;
    import android.net.wifi.ScanResult;
    import android.net.wifi.WifiManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import org.xmlpull.v1.XmlPullParser;
    import org.xmlpull.v1.XmlPullParserException;
    import org.xmlpull.v1.XmlPullParserFactory;
    import org.xmlpull.v1.XmlSerializer;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.util.Xml;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private static final String BOOKS_PATH = "/sdcard/books.xml";
        private View mButton1,mButton2,mButton3;
        private TextView mTextView;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            //实例化GraphicsView
            GraphicsView graphicsView = new GraphicsView(this);
            setContentView(graphicsView);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    GraphicsView
    package com.example.yanlei.wifi;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.Color;
    import android.view.View;
    import android.view.WindowManager;
    
    
    public class GraphicsView extends View{
    
        //声明画笔
        Paint paint=null;
    
        public GraphicsView(Context context) {
            super(context);
    
            /*----------------------------------------------
             * 部分书籍中把Paint paint=new Paint();放在onDraw方法中,建议
             * 尽量不要把初始化画笔放在onDraw方法中,这是因为:onDraw经常会运行
             * 到的,不要在里面new对象,越少越好,不然很浪费内存
             *--------------------------------------------*/
            //获取画笔,初始化画笔
            paint=new Paint();
           // onDraw(View);
        }
    
        @Override
        protected void onDraw(Canvas canvas){
            //设置画布背景为白色
            canvas.drawColor(Color.WHITE);
            int width = this.getWidth();
            int height = this.getHeight();
            paint.setStrokeWidth(4);
            paint.setColor(Color.YELLOW);
            canvas.drawRect(0, 0, (float) width - 20, (float) height - 20, paint);
            //设置画笔为红色
            paint.setColor(Color.BLUE);
            //使用当前画笔绘制一个圆心坐标为220,100,半径为60的圆
            canvas.drawCircle(220,180, 60, paint);
            //设置画笔为红色
            paint.setColor(Color.RED);
            //使用当前画笔绘制一个左上角坐标为80,20,右下角坐标为360,180的矩形
            canvas.drawRect(80,20,360,180, paint);
    
    
        }
    
    }
    

      参考:http://blog.csdn.net/jianghuiquan/article/details/8641174

  • 相关阅读:
    飞入飞出效果
    【JSOI 2008】星球大战 Starwar
    POJ 1094 Sorting It All Out
    POJ 2728 Desert King
    【ZJOI 2008】树的统计 Count
    【SCOI 2009】生日快乐
    POJ 3580 SuperMemo
    POJ 1639 Picnic Planning
    POJ 2976 Dropping Tests
    SPOJ QTREE
  • 原文地址:https://www.cnblogs.com/gisoracle/p/5224772.html
Copyright © 2011-2022 走看看