国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android自定義控件ImageView實現點擊之后出現陰影效果

2019-12-12 01:29:50
字體:
來源:轉載
供稿:網友

今天美工 直接給我一張圖片,要我實現圖片點擊之后有陰影效果,當時想到了ImageButton,隨即自己寫了個Demo,發現ImageButton繼承ImageView 會有一個默認的背景樣式,而且在布局中設計src(前景) 太丑,于是自己寫了個自定義控件ImageView實現了點擊之后,點擊區域有一個灰色的陰影效果,如下:

添加監聽回調等;

布局文件代碼:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/activity_main"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:paddingBottom="@dimen/activity_vertical_margin"  android:paddingLeft="@dimen/activity_horizontal_margin"  android:paddingRight="@dimen/activity_horizontal_margin"  android:paddingTop="@dimen/activity_vertical_margin"  tools:context="com.hanzheng.imagebutton.MainActivity"  android:orientation="vertical">    <ImageButton   android:id="@+id/button"   android:layout_width="100dp"   android:layout_height="100dp"   android:src="#ff0000"   />    <com.hanzheng.imagebutton.ClickImageView   android:layout_marginTop="10dp"   android:id="@+id/clickimageview"   android:clickable="true"   android:src="@drawable/flow"   android:layout_width="wrap_content"   android:layout_height="wrap_content"/>    <com.hanzheng.imagebutton.ClickImageView   android:layout_marginTop="10dp"   android:id="@+id/clickimageview2"   android:clickable="true"   android:src="#0f0"   android:layout_width="100dp"   android:layout_height="100dp"/> </LinearLayout> 

注意: 自定義控件中使用的src屬性,使用background會失效

ImageView中xml屬性src和background的區別:

background會根據ImageView組件給定的長寬進行拉伸,而src就存放的是原圖的大小,不會進行拉伸。src是圖片內容(前景),bg是背景,可以同時使用。

此外:scaleType只對src起作用;bg可設置透明度,比如在ImageButton中就可以用Android:scaleType控制圖片的縮放方式,控制的圖片為資源而不是背景,即android:src="@drawable/logo",而非android:background="@drawable/logo"程序中動態加載圖片也類似,如:應該imgView.setImageResource(R.drawable.*);而非imgView.setBackgroundResource(R.drawable.*);

更詳細的scaleType說明:

CENTER /center 在視圖中心顯示圖片,并且不縮放圖片
CENTER_CROP / centerCrop 按比例縮放圖片,使得圖片長 (寬)的大于等于視圖的相應維度
CENTER_INSIDE / centerInside 按比例縮放圖片,使得圖片長 (寬)的小于等于視圖的相應維度
FIT_CENTER / fitCenter 按比例縮放圖片到視圖的最小邊,居中顯示
FIT_END / fitEnd 按比例縮放圖片到視圖的最小邊,顯示在視圖的下部分位置
FIT_START / fitStart 把圖片按比例擴大/縮小到視圖的最小邊,顯示在視圖的上部分位置
FIT_XY / fitXY 把圖片不按比例縮放到視圖的大小顯示
MATRIX / matrix 用矩陣來繪制

自定義控件ClickImageView的代碼:

package com.hanzheng.imagebutton;  import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ImageView;  /**  * Created by zmybi on 2017/1/3.  */  public class ClickImageView extends ImageView {   public ClickImageView(Context context) {   super(context);  }  public ClickImageView(Context context, AttributeSet attrs) {   super(context, attrs);  }  public ClickImageView(Context context, AttributeSet attrs, int defStyleAttr) {   super(context, attrs, defStyleAttr);  }    @Override  public boolean onTouchEvent(MotionEvent event) {    switch (event.getAction()) {    case MotionEvent.ACTION_DOWN:     this.setColorFilter(0x33000000);     //重寫觸摸事件的方法,當按鈕被點擊的時候     mOnClickListener.onClick();     return true;    case MotionEvent.ACTION_UP:    case MotionEvent.ACTION_CANCEL:     this.setColorFilter(null);     break;   }   return super.onTouchEvent(event);  }   /**   * 定義點擊的接口   */  interface OnClickListener {   void onClick();  }   private OnClickListener mOnClickListener;   public void setOnClickListener (OnClickListener onClickListener) {   this.mOnClickListener = onClickListener;  }   } 

MainActivity中的代碼:一個監聽回調

package com.hanzheng.imagebutton;  import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageButton; import android.widget.Toast;  public class MainActivity extends AppCompatActivity {   private ImageButton mBt;  private ClickImageView mCiv;  private ClickImageView mCiv2;   @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   mBt = (ImageButton) findViewById(R.id.button);   mCiv = (ClickImageView) findViewById(R.id.clickimageview);   mCiv2 = (ClickImageView) findViewById(R.id.clickimageview2);   mCiv.setOnClickListener(new ClickImageView.OnClickListener() {    @Override    public void onClick() {     Toast.makeText(MainActivity.this,"自定義ImageView點擊1",Toast.LENGTH_SHORT).show();    }   });    mCiv2.setOnClickListener(new ClickImageView.OnClickListener() {    @Override    public void onClick() {     Toast.makeText(MainActivity.this,"自定義ImageView點擊2",Toast.LENGTH_SHORT).show();    }   });    mBt.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {     Toast.makeText(MainActivity.this,"ImageButton點擊",Toast.LENGTH_SHORT).show();    }   });  } } 

至此,一個自定義的ImageView實現點擊陰影完成。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 信宜市| 石门县| 宝坻区| 郯城县| 玉溪市| 肇庆市| 拉孜县| 怀化市| 禄丰县| 通渭县| 偏关县| 房产| 任丘市| 准格尔旗| 绍兴县| 清苑县| 丘北县| 贵溪市| 民勤县| 泰安市| 且末县| 鱼台县| 盖州市| 扶沟县| 上林县| 灵寿县| 藁城市| 天气| 潼南县| 德阳市| 鄢陵县| 沁源县| 石河子市| 会理县| 通城县| 无锡市| 阳西县| 余干县| 万载县| 太和县| 余干县|