UI组件的基本属性

android:id  指定该控件的唯一标识,可通过findViewById("id")获取指定的界面组件

android:layout_width  指定该组件的宽度.match_parent与父容器具有相同的宽度;wrap_content能包裹内容即可;

android:layout_height  指定该组件的高度

android:layout_marginBottom:指定该组件下边的页边距

android:layout_marginLeft:指定该组件左边的页边距

android:layout_marginRight:指定该组件右边的页边距

android:layout_marginTop:指定该组件上边的页边距

组件

View组件:所有UI控件,容器控件的基类。调用Activity的setContentView()方法显示

Activity:负责与用户交互,只能通过setContentView(View)来显示指定组件

Service:后台运行

BroadcastReceiver:事件监听器

ContentProvider:数据交换

Intent:通信载体

IntentFilter:声明

 

 

简单图片浏览器实例

activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity"
    android:id="@+id/root"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</LinearLayout>

MainActivity.java

package com.example.myapplication;

import android.os.Bundle;


import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
    //定义一个访问图片的数组
    int [] images=new int[]
            {
                    R.drawable.java,
                    R.drawable.javaee,
                    R.drawable.swift,
                    R.drawable.ajax,

            };
    int CurrentImg=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取LinearLayout布局容器
        LinearLayout main = (LinearLayout) findViewById(R.id.root);
        //程序创建ImageView组件
        final ImageView image = new ImageView(this);
        //将ImageView组件添加到LinearLayout布局容器中
        main.addView(image);
        //初始化第一张图片
        image.setImageResource(images[0]);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //改变ImageView里显示的图片
                image.setImageResource(images[++CurrentImg % images.length]);
            }
        });
    }
}

 跟随手指运动的小球实例

 CustomViewActivity
package com.example.myapplication1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.LinearLayout;

public class CustomViewActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //获取布局文件中的LinearLayout容器
        //LinearLayout root=(LinearLayout)findViewById(R.id.root);
        //创建DrawView组件
        //final DrawView draw=new DrawView(this);
        //设置自定义组件的最小宽度、高度
        //draw.setMinimumWidth(300);
        //draw.setMinimumHeight(500);
        //root.addView(draw);
    }
}
DrawView
package com.example.myapplication1;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

import java.util.jar.Attributes;

import static android.os.Build.VERSION_CODES.P;

public class DrawView extends View {
    public float currentX=40;
    public float currentY=50;
    //定义并创建画笔
    Paint p=new Paint();
    public DrawView(Context context) {
        super(context);
    }
    public DrawView(Context context, AttributeSet set)
    {
        super(context,set);
    }
    @Override
    public void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        //设置画笔的颜色
        p.setColor(Color.RED);
        //绘制一个小圆(作为小球)
        canvas.drawCircle(currentX,currentY,15,p);
    }
    //为该组件的触碰事件重写事件处理方法
    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        //修改currentX,currentY两个属性
        currentX=event.getX();
        currentY=event.getY();
        //通知当前组件重绘自己
        invalidate();
        //返回true表明该处理方法已经处理该事件
        return true;
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/root">
    <com.example.myapplication1.DrawView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

 

posted on 2020-03-09 20:29  嘻嘻_嘻  阅读(500)  评论(0)    收藏  举报