• 基础复习——图形定制——图形Drawable——形状图形——九宫格图片——状态列表图形


    Drawable类型表达了各种各样的图形,包括图片、色块、画板、背景等。


    包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般保存描述性的XML文件,而图片文件一般放在具体分辨率的drawable目录下。


    各视图的background属性、ImageView和ImageButton的src属性、TextView和Button四个方向的drawable***系列属性都可以引用图形文件。

    Shape图形又称形状图形,它用来描述常见的几何形状,包括矩形、圆角矩形、圆形、椭圆等等。


    形状图形的定义文件是以shape标签为根节点的XML描述文件,它支持四种类型的形状:


    (1)rectangle:矩形。默认值


    (2)oval:椭圆。此时corners节点会失效


    (3)line:直线。此时必须设置stroke节点,不然会报错


    (4)ring:圆环

    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 指定了形状内部的填充颜色 -->
        <solid android:color="#ffdd66" />
        <!-- 指定了形状轮廓的粗细与颜色 -->
        <stroke
            android:width="1dp"
            android:color="#aaaaaa" />
        <!-- 指定了形状四个圆角的半径 -->
        <corners android:radius="10dp" />
    </shape>

     

     

     

     

     

     

     

    首页布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/btn_next"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:padding="5dp"
            android:text="点击跳转下一个activity页面"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
    </LinearLayout>

    首页代码:

    package com.example.myapplication;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import androidx.appcompat.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    {
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            findViewById(R.id.btn_next).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v)
        {
            if (v.getId() == R.id.btn_next)
            {
                startActivity(new Intent(this, DrawableShapeActivity.class));  //创建一个目标确定的意图
    
            }
        }
    }

    第二个布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <View
            android:id="@+id/v_content"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:background="@color/teal_200"
            android:layout_margin="10dp" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/btn_rect"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="圆角矩形背景"
                android:textColor="@color/black"
                android:textSize="17sp" />
    
            <Button
                android:id="@+id/btn_oval"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="椭圆背景"
                android:textColor="@color/black"
                android:textSize="17sp" />
    
        </LinearLayout>
    
    </LinearLayout>

    第二个代码:

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.view.View;
    import androidx.appcompat.app.AppCompatActivity;
    
    public class DrawableShapeActivity extends AppCompatActivity implements View.OnClickListener
    {
        private View v_content; // 声明一个视图对象
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_drawable_shape);
    
            // 从布局文件中获取名叫v_content的视图
            v_content = findViewById(R.id.v_content);
    
            // v_content的背景设置为圆角矩形
    //        v_content.setBackgroundResource(R.drawable.shape_rect_gold);
    
            // 给btn_rect设置点击监听器
            findViewById(R.id.btn_rect).setOnClickListener(this);
    
            // 给btn_oval设置点击监听器
            findViewById(R.id.btn_oval).setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v)
        {
            if (v.getId() == R.id.btn_rect)    // 点击了“圆角矩形背景”按钮
            {
                v_content.setBackgroundResource(R.drawable.shape_rect_gold);   // v_content的背景设置为圆角矩形
            }
            else if (v.getId() == R.id.btn_oval)          // 点击了“椭圆背景”按钮
            {
    
                v_content.setBackgroundResource(R.drawable.shape_oval_rose);         // v_content的背景设置为椭圆形状
            }
        }
    
    }

     

    shape_oval_rose.xml

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
    
        <!-- 指定了形状内部的填充颜色 -->
        <solid android:color="#F3F2EC" />
    
        <!-- 指定了形状轮廓的粗细与颜色 -->
        <stroke
            android:width="1dp"
            android:color="#F10606" />
    
    </shape>

    shape_rect_gold.xml

    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <!-- 指定了形状内部的填充颜色 -->
        <solid android:color="#ffdd66" />
    
        <!-- 指定了形状轮廓的粗细与颜色 -->
        <stroke
            android:width="1dp"
            android:color="#E61111" />
    
        <!-- 指定了形状四个圆角的半径 -->
        <corners android:radius="10dp" />
    
    </shape>

    =================================================================================================================

     

     

    点九图片的扩展名是png,文件名后面常带有“.9”字样。因为该图片划分了3×3的九宫格区域,所以得名点九图片,也叫九宫格图片。

    在拉伸点九图片时,只拉伸内部区域,不拉伸边缘线条。

    在Android Studio中右击某张图片,并在右键菜单中选择“Create 9-Patch files”,接着单击OK按钮即可自动生成点九图片。

     

     

     

     

     

     

    ========================================================================================================

    Button按钮的背景在正常情况下是凸起的,在按下时是凹陷的,从按下到弹起的过程,用户便能知道点击了这个按钮。

    在项目中创建状态图形的XML文件,则需右击drawable目录,

    然后在右键菜单中依次选择New→Drawable resource file,即可自动生成一个空的XML文件。


    下面是一个状态列表图形的drawable文件:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
             <item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
             <item android:drawable="@drawable/button_normal" />
    </selector>

     

     

     

    布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:text="默认样式的按钮"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:paddingLeft="8dp"
            android:paddingRight="8dp"
            android:background="@drawable/btn_nine_selector"
            android:text="定制样式的按钮"
            android:textColor="@color/black"
            android:textSize="17sp" />
    
    </LinearLayout>

    btn_nine_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
        <item android:drawable="@drawable/button_normal" />
    </selector>

    代码:

    package com.example.myapplication;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class DrawableStateActivity extends AppCompatActivity
    {
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_drawable_state);
    
    
        }
    }

  • 相关阅读:
    app测试更多机型系统解决方法
    Dsyy的第一篇博文~
    linux服务器下安装node
    android UI进阶之实现listview的下拉加载
    android应用开发全程实录用户界面部分章节你真的会用最简单的TextView么?
    android应用开发全程实录你有多熟悉listview?
    android应用开发全程实录实现甩动拨打和挂断电话
    android应用开发全程实录关于google map的部分章节漂亮的气泡地图
    android UI进阶之用ViewPager实现欢迎引导页面
    android UI进阶之实现listview中checkbox的多选与记录
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16557104.html
Copyright © 2020-2023  润新知