如何使用ListView的Image Mask

时间:2015-03-01 12:32:57

标签: android listview mask

我有一个活动,用listView列出数据及其行的图像。

   String[] from = {"subject","img","description","id"};
        int[] to = {R.id.tv_subject,R.id.iv_pic, R.id.tv_details, R.id.hide_id};

       SimpleAdapter adapter = new   SimpleAdapter(ListViewActivity.this,searchResult,R.layout.listview, from, to);
        mListView.setAdapter(adapter);

我的ListView.xml是:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ffffff"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView 
    android:id="@+id/iv_pic"
    android:layout_gravity="left"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"/>
<TextView 
    android:textColor="#000000"
    android:layout_gravity="center"
    android:id="@+id/tv_subject"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"     
    android:textSize="15sp"   
    android:textStyle="bold" />

   <LinearLayout 
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="horizontal">
   <TextView 

    android:textColor="#000000"
    android:layout_gravity="right"
    android:paddingRight="5dp"
    android:id="@+id/tv_details"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

  <TextView
    android:visibility="gone"
    android:id="@+id/hide_id"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
 </LinearLayout>

现在我有一部分代码用掩码显示图像:

  ImageView mImageView= (ImageView)findViewById(R.id.img);
    ImageView mImageView1= (ImageView)findViewById(R.id.img1);
    Bitmap original = BitmapFactory.decodeResource(getResources(),R.drawable.c);
    Bitmap mask = BitmapFactory.decodeResource(getResources(),R.drawable.poster);
    Bitmap result = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Config.ARGB_8888);
    Canvas mCanvas = new Canvas(result);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setXfermode( new PorterDuffXfermode(Mode.DST_IN));
    mCanvas.drawBitmap(original, 0, 0, null);
    mCanvas.drawBitmap(mask, 0, 0, paint);
    paint.setXfermode(null);
    mImageView.setImageBitmap(result);

我希望在listview中使用蒙版显示每个图像(如果列表视图,每个图像都在一行中)

1 个答案:

答案 0 :(得分:0)

为了自定义ListView的膨胀(例如设置“掩码”),您必须子类化您创建的SimpleAdapter并覆盖getView(int position, View convertView, ViewGroup parent)方法。

在该方法中,您检查已单击的视图并适当地对其进行充气,设置所需的ImageView和TextView。并且在该方法中,您将填写与正在膨胀的视图对应的数据。

查看this教程了解更多信息。