图像级别组件以及如何实现图像的半透明效果(自定义属性)

本文介绍了一种在Android中通过自定义ImageView实现图像半透明效果的方法。具体包括使用XML定义图像级别组件,设置不同级别的图像资源,以及创建自定义ImageView类来调整图像透明度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像级别组件

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/bottle_pick_bg_spotlight_day"
        android:maxLevel="10"
        android:minLevel="6"/>
    <item
        android:drawable="@drawable/bottle_pick_bg_spotlight_night"
        android:maxLevel="20"
        android:minLevel="12"/>
</level-list>

代码调用ImageView.setImageLevel(15);

 实现图像的半透明效果

代码:

1.attrs.xml

 

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

    <declare-styleable name="abc">
        <attr name="RID" format="integer" />
        <attr name="ALPHA" format="integer" />
    </declare-styleable>

</resources>

2.main.xml

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cyx="http://schemas.android.com/apk/res/com.b.a"  //注意是程序包名
     android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <com.b.a.ImageViewExt
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        cyx:ALPHA="50"
        cyx:RID="0x7f020000" >
    </com.b.a.ImageViewExt>

</LinearLayout>

3.自定义类

public class ImageViewExt extends View {
 Bitmap bitmap;
 int alpha;

 public ImageViewExt(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.abc);
  int value = typedArray.getInt(R.styleable.abc_RID, 0);
  alpha = typedArray.getInt(R.styleable.abc_ALPHA, 0);
  typedArray.recycle();
  bitmap = BitmapFactory.decodeResource(getResources(), value);
  System.out.println();
 }

 public ImageViewExt(Context context, AttributeSet attrs) {
  super(context, attrs);
  TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.abc);
  int value = typedArray.getInt(R.styleable.abc_RID, 0);
  alpha = typedArray.getInt(R.styleable.abc_ALPHA, 0);
  typedArray.recycle();
  bitmap = BitmapFactory.decodeResource(getResources(), value);
  System.out.println();
 }

 public ImageViewExt(Context context) {
  super(context);
 }

 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  Paint paint = new Paint();
  paint.setAlpha(alpha);// 0-255来自于自定义的属性
  // 绘制半透明的图像
  canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()), paint);
 }

}

 

 

  

参考http://blog.youkuaiyun.com/longvslove/article/details/7084537

转载于:https://my.oschina.net/u/573470/blog/122293

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值