自定义View
来源:互联网 发布:linux execl 返回值 编辑:程序博客网 时间:2024/06/03 14:59
public class MainActivity extends AppCompatActivity { private RelativeLayout relat; //item上的数据源 private String[] name = {"矩形", "圆形", "三角形", "扇形", "椭圆", "曲线","文字和图片"}; private ListView listview; //listview的adapter private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化listview listview = (ListView) findViewById(R.id.listview); //实例化数据源 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name); //listview设置adapter listview.setAdapter(adapter); //listview设置点击事件 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("position",position); startActivity(intent); } }); }}
public class Main2Activity extends AppCompatActivity { private RelativeLayout relat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //获取布局文件中的容器 relat=(RelativeLayout)findViewById(R.id.rela); int position=getIntent().getIntExtra("position",0); //判断点击了第几个 if (position == 0) { //矩形 //创建DrawView组件 RectActivity dv=new RectActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 1) { //圆形 //创建DrawView组件 CircleActivity dv=new CircleActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 2) { //三角形 //创建DrawView组件 TrigonActivity dv=new TrigonActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 3) { //扇形 //创建DrawView组件 SectorActivity dv=new SectorActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 4) { //椭圆 //创建DrawView组件 OvalActivity dv=new OvalActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 5) { //曲线 //创建DrawView组件 PathActivity dv=new PathActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); }else if (position == 6) { //曲线 //创建DrawView组件 TvIvActivity dv=new TvIvActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } }}//矩形public class RectActivity extends View { //无参 public RectActivity(Context context) { super(context); } //有参 public RectActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); //设置实心 p.setStyle(Paint.Style.FILL); // 设置红色 p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); //绘制 canvas.drawRect(50, 100, 900, 900, p); }}//圆形public class CircleActivity extends View { int width; int height; //无参 public CircleActivity(Context context) { super(context); init(); } //有参 public CircleActivity(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //获取屏幕的宽高 //Android绘图机制(一)——自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 4, height / 2, width / 4, p); }}//扇形public class SectorActivity extends View { public SectorActivity(Context context) { super(context); } public SectorActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(300, 300, 600, 700); canvas.drawArc(rectF, 300, 160, true, p); }}//三角形public class TrigonActivity extends View { //无参 public TrigonActivity(Context context) { super(context); } //有参 public TrigonActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); //实例化路径 Path path = new Path(); path.moveTo(100, 200);// 此点为多边形的起点 path.lineTo(500, 400); path.lineTo(100, 400); path.close(); // 使这些点构成封闭的多边形 canvas.drawPath(path, p); }}//椭圆public class OvalActivity extends View { public OvalActivity(Context context) { super(context); } public OvalActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); rectF.set(210,100,600,300); canvas.drawOval(rectF, p); }}//曲线public class PathActivity extends View { public PathActivity(Context context) { super(context); } public PathActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); p.reset(); //设置空心 p.setStyle(Paint.Style.STROKE); Path path = new Path(); path.moveTo(100, 320);//设置Path的起点 path.quadTo(300, 900, 300, 300); //设置路径点和终点 canvas.drawPath(path, p); }}//文字或图片public class TvIvActivity extends View { public TvIvActivity(Context context) { super(context); } public TvIvActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.RED); //文本 canvas.drawText("自定义文本", 200, 330, p); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); //图片 canvas.drawBitmap(bitmap, 250, 300, p); }}//圆环public class CircleActivity extends View { int width; int height; //无参 public CircleActivity(Context context) { super(context); init(); } //有参 public CircleActivity(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //获取屏幕的宽高 //Android绘图机制(一)——自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 5, height / 2, width / 8, p); Paint w = new Paint(); w.setColor(Color.WHITE); // 设置画笔的锯齿效果 w.setAntiAlias(true); canvas.drawCircle(width / 5, height / 2, width / 9, w); }}
2 0
- 自定义view
- 自定义View
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义View
- 自定义view
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义view
- 自定义view
- 自定义view
- 自定义view
- 自定义View
- 自定义View
- 一些自己的观点
- Android中MD5加密操作代码
- Python新手学习基础之条件语句——elif语句
- 利用VMware在虚拟机上安装Zookeeper集群
- RegexUtils(常用验证方法)
- 自定义View
- 预增量和预减量
- redis的发布和订阅功能
- Struts2基础学习总结
- 高精度计算(二)高精加
- HDU-3440 House Man
- 【caffe-Windows】mnist实例编译之model的生成
- JQuery JS Ajax比较
- EasyUI+SpringMVC登录路径要加http://