android动画及阴影效果

android动画及阴影效果,第1张

1.动画

定义位置:xml/anima包下

常用属性:

alpha 渐变透明度动画效果

scale 渐变尺寸伸缩动画效果

fromXScale,fromYScale, 动画开始前X,Y的缩放,0.0为不显示, 1.0为正常大小

toXScale,toYScale, 动画最终缩放的倍数, 1.0为正常大小,大于1.0放大

pivotX, pivotY 动画起始位置,相对于屏幕的百分比,两个都为50%表示动画从屏幕中间开始

2.阴影效果

(1)生成bitmap

Bitmap.createBitmap(width,height,Config.ARGB_8888)//创建符合w h的32位位图

若要修改位图颜色,则对位图中的每一帧进行颜色赋值:

<pre>

public static final Bitmap createRGBImage(Bitmap bitmap,int color)

{ int bitmap_w=bitmap.getWidth()

int bitmap_h=bitmap.getHeight()

int[] arrayColor=new int[bitmap_w bitmap_h]

int count=0

for(int i=0i<bitmap_hi++){

for(int j=0j<bitmap_wj++){

int color1=bitmap.getPixel(j,i)//获取某个位值处的颜色

//暂时我只是要处理除了透明的颜色,改变其他的颜色

if(color1!=0){

}else{

color1=color

}

arrayColor[count]=color

count++

}

}

bitmap = Bitmap.createBitmap( arrayColor, bitmap_w, bitmap_h, Config.ARGB_4444 )

return bitmap

}

</pre>

(2)通过BitmapHelper对图片进行压缩

BitmapHelper.scaledBitmap(bitmap,压缩率值小于1);

(3)

若是直接将阴影和雪块平台一起切图,则会发生图片难以定位,及图片拉伸的问题

虽然可以通过 比例大法 解决,但是比较复杂

直接实现阴影似乎复杂度也比较高

可以将描边及阴影一起切图,然后 制作成 点九图,(见《Android Studio 制作点九图》) ,当做背景填充即可

为控件设置一个有阴影感的背景图片即可,可以使用shape

在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小

//自定义两种阴影效果

第一种

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">  

  <item android:state_pressed="true"> 

    <layer-list> 

      <item android:left="4dp" android:top="4dp">

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="30dip"/> 

        </shape>

      </item> 

    </layer-list> 

  </item>  

  <item> 

    <layer-list> 

      <!-- 第一层 -->  

      <item android:left="4dp" android:top="4dp">

        <shape> 

          <solid android:color="#66000000"/>  

          <corners android:radius="30dip"/>  

          <!-- 描边 -->  

          <stroke android:width="1dp" android:color="#ffffffff"/> 

        </shape>

      </item>  

      <!-- 第二层 -->  

      <item android:bottom="4dp" android:right="4dp">

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="30dip"/>  

          <!-- 描边 -->  

          <stroke android:width="1dp" android:color="#ffffffff"/> 

        </shape>

      </item> 

    </layer-list>

  </item> 

</selector>

第二种

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">  

  <!-- 点击之后 -->  

  <item android:state_pressed="true"> 

    <layer-list> 

      <item android:left="4dp" android:top="4dp"> 

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="3dp"/> 

        </shape> 

      </item> 

    </layer-list>

  </item>  

  <!-- 正常状态 -->  

  <item> 

    <layer-list> 

      <!-- 第一层 -->  

      <item android:left="2dp" android:top="2dp"> 

        <shape> 

          <solid android:color="#66000000"/>  

          <corners android:radius="3dp"/> 

        </shape> 

      </item>  

      <!-- 第二层 -->  

      <item android:bottom="4dp" android:right="4dp"> 

        <shape> 

          <solid android:color="#ff58bb52"/>  

          <corners android:radius="3dp"/> 

        </shape> 

      </item>  

      <!-- 第三层 -->  

      <item android:bottom="6dp" android:right="6dp"> 

        <shape> 

          <solid android:color="#ffcccccc"/>  

          <corners android:radius="3dp"/> 

        </shape> 

      </item> 

    </layer-list> 

  </item> 

</selector>

设置后的效果图如下


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11540734.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存