用shape画内圆外方,形成一个圆形头像

前言

很多人都有过这样的经历,想要在自己写的程序里,上传一张随便大小形状的照片在程序里显示都是圆形照片,或者是方形,或者是三角形,但是写代码又非常麻烦,这里就有一个也可以实现一样效果的方法,那就是用layer-list画。

1:新建一个工程,在drawable文件夹下创建一个xml文件,如图:

img

img

2:代码如下,里面有解释

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 图层1(oval) -->
    <!-- left,top,right,bottom定义为-10,是为了扩大oval,达到覆盖四角的效果 -->
    <item android:left="-10dp" android:top="-10dp" android:right="-10dp" android:bottom="-10dp">
        <shape
            android:shape="oval">
            <!-- oval_inner[内部] -->
            <stroke
                android:width="10dp"
                android:color="#ffffff" />
            <!-- oval_inner_size[大小(除去边线)] ,也是最终裸露出来的圆形图像区域-->
            <size
                android:height="50dp"
                android:width="50dp" />
            <!-- 使oval_inner透明,裸露出将来设置的背景图片 -->
            <gradient android:centerColor="#0000" />
        </shape>
    </item>

</layer-list>

3:使用方法

<ImageView
    android:layout_width="400px"
    android:layout_height="400px"
    android:src="@drawable/layer1"
    android:background="@drawable/img1"/>

img

这些大家也可以尝试去完成,当然如果目前完成不了也不要灰心,只要多学习多看慢慢就可以完成了。

那这里这里也分享一些我自己整理的对Android 有提升的资料免费分享给大家,有需要的可以扫描领取!

由于文档内容过多,因此为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的看文末有免费的获取方式!(文末还有使用ChatGPT机器人小福利哦!!大家不要错过)

《Android Framework源码开发揭秘》

本学习手册深入剖析了Android系统源代码,详细讲解了Android框架初始化过程及主要组件的工作原理,旨在通过实例和案例介绍 Android Framework 的核心概念和技术,从而帮助开发者更好地理解 Android 应用程序的设计和开发。
该手册适合具有一定 Android 应用开发经验的程序员,希望能通过深入学习 Android Framework 来帮助开发者更好地理解和掌握这一技术。

在这里插入图片描述

第一章 系统启动流程分析

Android系统完整的启动过程,从系统层次角度可分为 Linux 系统层、Android 系统服务层、Zygote进程模型三个阶段;
知识要点:
第一节 Android启动概括、
第二节 init.rc解析、
第三节 Zygote、
第四节 面试题

在这里插入图片描述

第二章 跨进程通信IPC解析

Binder作为Android进程间通信的机制,可以看做是一个驱动。在Android中,常见的进程间通信例如系统类的:打电话、闹钟等;自己创建的:像WebView、视频播放、音频播放、大图浏览等。

图片

第三章 Handler源码解析
第一节 源码分析
第二节 难点问题
第三节Handler常问面试题

有需要的朋友扫描下方二维码领取!!!!

同时这里还搭建了一个基于chatGPT的微信群聊机器人,24小时为大家解答疑难技术问题。

同时这里还搭建了一个基于chatGPT的微信群聊机器人,24小时为大家解答疑难技术问题

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,可以使用"extends"关键字来从抽象类Shape类扩展出一个圆形类Circle。示例代码如下: ``` abstract class Shape { // 抽象方法 public abstract void draw(); } class Circle extends Shape { @Override public void draw() { // 实现圆形绘制代码 } } ``` 在上述代码中,Circle类继承了Shape类并重写了draw()方法,以实现绘制圆形的功能。 ### 回答2: Shape类是所有形状的抽象类,我们可以从它扩展出许多子类,如矩形、三角形、椭等。在这个过程中,我们发现还缺少一个圆形类,我们可以从Shape类扩展出一个圆形类Circle来弥补这个不足。 在Circle类中,我们可以定义的半径作为属性,并利用Shape类中定义的抽象方法来计算的面积和周长。具体而言,我们可以实现如下代码: ``` abstract class Shape { // 定义两个抽象方法 public abstract double area(); public abstract double perimeter(); } class Circle extends Shape { double radius; // 的半径 public Circle(double radius) { this.radius = radius; } // 实现Shape类中的抽象方法 public double area() { return Math.PI * radius * radius; } public double perimeter() { return 2 * Math.PI * radius; } } ``` 在Circle类中,我们首先定义了半径作为属性,并在构造方法中初始化。然后,我们实现了Shape类中的两个抽象方法area()和perimeter(),分别用来计算的面积和周长。其中,的面积公式是πr²,周长公式是2πr,r是的半径。这里,我们直接利用Math类中定义好的π常量和平方函数来进行计算。 除此之外,我们还可以添加一些其他的方法,比如判断两个是否相等、判断一个点是否在内等。总之,从Shape类扩展出一个圆形类Circle是非常简单和自然的,因为圆形作为一种常见的形状,它应该被纳入到我们的形状类层次结构中,并且可以享受到Shape类中定义好的各种抽象方法和属性的好处。 ### 回答3: 抽象类是面向对象编程中非常重要的概念之一,它是一种特殊的类,不能直接创建实例,而是需要继承后才能使用。在Java中,我们用关键字abstract来定义抽象类,并且抽象类中可以包含抽象方法和非抽象方法。 我们先来看一下抽象类shape类,它应该包含哪些属性和方法。 首先,shape类是一个抽象类,不能直接创建实例。其次,它应该包含至少一个抽象方法,用来描述不同形状之间的共性。例如,我们可以定义一个抽象方法来计算形状的面积,因为不同形状的面积计算方式是不同的。 接下来,我们需要扩展出一个圆形类circle。圆形有什么特殊的属性或方法呢?首先,圆形应该拥有一个半径,用来计算面积和周长。其次,我们还可以定义一个心坐标,方便进行位置上的计算。最后,我们还可以重写shape类的抽象方法来计算的面积和周长。 继承shape类后,我们需要在circle类中定义自己特有的属性和方法,例如计算周长和面积的公式,以及心坐标等。同时,我们还需要重写shape类中的抽象方法,在circle类中实现计算的面积和周长的方法。 总之,从抽象类shape类扩展出一个圆形类circle,需要确定shape类中的抽象方法和非抽象方法,同时在circle类中定义自己特有的属性和方法,重写shape类中的抽象方法,实现自己特有的计算方法。通过这种方式,我们可以实现代码的重用和扩展性,更好地满足软件开发中的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值