关于xml自定义形状的一点发现

 

这篇文章应该是前天(2015-4-7)发表的,由于最近项目比较紧,晚上回去的比较晚,所以之前的文章在这里补上,也作为记录之用

PS:话说节后上班第一天就有这么神奇的发现,想想还真是令人兴奋哪大笑

好了,言归正传。抛砖引玉,更多好玩的东西有待各位看官继续研究。 

 关于在xml文件中自定义形状作为按钮背景的用法相信做过一两个正式的app的开发人员应该都是熟悉的,在此简单提下。

   1.layer-list      

    顾名思义,就是层叠的意思,将多个颜色或者图片按照顺序叠加起来,使用方法和引用正常图片一样。具体的例子大家可以百度,有不会的或者不懂的可以留言。虽然我自己用的不多,不过原    理还是理解的。

    基本语法:

      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">     

          <item android:drawable="@android:color/white" />  

         <item android:drawable="@drawable/logo_overlay" />  

    </layer-list>  

2.shape

     shape算是笔者在这段时间的工作中用的比较多的了,用法也比较灵活。

     介绍下shape相关的属性:

         1.<shape xmlns:android="http://schemas.android.com/apk/res/android"
                         android:shape="rectangle" >

             通过shape属性设置形状,一共有四个选项rectangle(矩形)、oval(椭圆)、line(线)、ring(圆环)

        2.<corners   android:topLeftRadius="2dp  android:topRightRadius="2dp"
                            android:bottomLeftRadius="2dp"  android:bottomRightRadius="2dp"/>

            在corners标签中设置各个角的圆角半径值,如果都相等的话可以通过radius统一设置。

        3. padding标签与corner类似 设置的是top/left/right/bottom 四个边的padding值。

        4.  stroke 表示边线。可以通过color设置颜色,通过width设置宽度。

        5.  solid   表示填充颜色,相当于背景

        6.  gradient 表示渐变色,可以设置的属性相对较多,一般设置startColor起始颜色,endColor结束时候的颜色,angle表示角度。具体的效果大家可以自己尝试。

简单的介绍到此为止,有问题的可以留言继续讨论。

下面才是重点。

     在开发中遇到这样一种情况:需要设置颜色为循环颜色,当然如果拿图片做背景进行循环也可以,这里提供另外一种思路----GradientDrawable

     官方解释是:A Drawable with a color gradient for buttons, backgrounds, etc.    一张通过颜色渐变实现的图片用来作为按钮或者背景等。

                                  It can be defined in an XML file with the<shape> element.     可以在xml中通过shape元素进行定义。(话说当时看到这句话真的是豁然开朗,犹如醍醐灌顶。)

       没错就是它。在代码中修改属性的也全是靠它完成的。

     比如在drawable文件夹中通过shape标签定义了一个btn_bgxml文件作为按钮的背景,如果修改它的背景颜色的话,也就相当于修改xml中的solid属性,可以通过下面两行代码实现。

       GradientDrawable  drawable = context.getResources().getDrawable(R.drawable.btn_bg);

     drawable.setColor(Color.parseColor(colorList.get(position%colorList.size())));

     其中的colorList就是要循环的颜色列表啦,字符串类型的list。需要说明的是与shape标签对应的是GradientDrawable,与layerList标签对应的是LayerDrawable,不做赘述。

     相信看到这里,大家应该能明白一二了。更多属性和好玩的东西希望大家能够亲自去尝试,去发现。

     再举个例子,如果要实现三个角是圆角一个角是直角的矩形效果的话,也可以采用这种方式。这里留个悬念,大家可以自行尝试。下篇文章会进行解答和说明。

     限于篇幅,本篇文章到此为止,多谢大家细心阅读完~

  

      







 





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要在 Android 应用程序中添加自定义左上角返回箭头,可以按照以下步骤进行操作: 1. 在你的项目中的 res/drawable 中创建一个新的 xml 文件,名为 ic_back_arrow.xml 。在该文件中添加以下代码: ``` <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#FFFFFF" android:pathData="M20,11H7.83l5.59,-5.59c0.39,-0.39 0.39,-1.02 0,-1.41 -0.39,-0.39 -1.02,-0.39 -1.41,0L2.39,11c-0.39,0.39 -0.39,1.02 0,1.41l9.01,9.01c0.39,0.39 1.02,0.39 1.41,0 0.39,-0.39 0.39,-1.02 0,-1.41l-5.59,-5.59H20c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1z"/> </vector> ``` 2. 在你的布局文件中添加一个 ImageView 。为了使其显示在左上角,可以使用 RelativeLayout 或者 FrameLayout 来布局。以下是一个使用 RelativeLayout 的示例: ``` <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/back_arrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:src="@drawable/ic_back_arrow" android:layout_alignParentStart="true" android:layout_alignParentTop="true"/> <!-- 其他的视图 --> </RelativeLayout> ``` 3. 在你的活动中添加以下代码,以处理箭头被点击的事件: ``` ImageView backArrow = findViewById(R.id.back_arrow); backArrow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); ``` 这个示例中的 onClickListener() 会调用 onBackPressed() 方法,这将使活动回到上一个活动或者退出应用。 ### 回答2: 在Android中,我们可以使用XML自定义左上角的返回箭头。要实现这一功能,我们需要按照以下步骤进行操作: 第一步,确保项目中存在一个drawable文件夹。如果没有,请在res目录下创建一个drawable文件夹。 第二步,进入drawable文件夹,创建一个名为"ic_arrow_back.xml"的XML文件。 第三步,在该XML文件中,我们需要使用path标签绘制三角形的形状。可以使用如下代码: ```xml <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#000000" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8l8,8l1.41,-1.41L7.83,13H20v-2z"/> </vector> ``` 第四步,现在我们可以在工具栏中的Activity中调用该返回箭头图标。我们只需指定该图标的drawable资源即可。可以使用如下代码: ```xml <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="3dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <ImageView android:id="@+id/back_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_arrow_back" android:contentDescription="@null" /> </androidx.appcompat.widget.Toolbar> ``` 第五步,我们还需要在Activity中为返回箭头图标添加点击事件,以实现返回的功能。可以使用如下代码: ```java ImageView backIcon = findViewById(R.id.back_icon); backIcon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); ``` 通过上述步骤,我们就可以在Android中使用XML自定义左上角的返回箭头。你可以根据自己的需求修改箭头的颜色、大小和形状等。 ### 回答3: 要在Android的XML布局文件中自定义左上角的返回箭头,可以通过以下步骤完成: 1. 首先,在项目的drawable文件夹下创建一个新的XML文件,用于定义自定义的返回箭头图标。可以根据需要使用矢量图形或位图图像。 2. 在XML文件中,可以使用<vector>标签定义矢量图形,或使用<bitmap>标签定义位图图像。 例如,使用矢量图形创建一个简单的返回箭头: ```xml <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#000000" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8l8,8l1.41,-1.41L7.83,13H20v-2z"/> </vector> ``` 3. 在布局文件中的Toolbar或ActionBar中添加一个ImageView元素,用于显示返回箭头图标。 ```xml <ImageView android:id="@+id/back_arrow" android:layout_width="24dp" android:layout_height="24dp" android:src="@drawable/custom_arrow"/> ``` 这里的"@drawable/custom_arrow"是刚刚创建的自定义箭头图标文件。 4. 在相关的Java代码中,可以为返回箭头添加点击事件,并在事件处理方法中处理返回操作。 ```java ImageView backArrow = findViewById(R.id.back_arrow); backArrow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); // 处理返回操作 } }); ``` 通过以上步骤,就可以在Android的XML布局文件中自定义左上角的返回箭头,并添加点击事件来处理返回操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泽济天下

你的鼓励是我最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值