Android應用中設定alpha值來製作透明與漸層效果的執行個體_Android

來源:互聯網
上載者:User

Android系統支援的顏色是由4個值組成的,前3個為RGB,也就是我們常說的三原色(紅、綠、藍),最後一個值是A,也就是Alpha。這4個值都在0~255之間。顏色值越小,表示該顏色越淡,顏色值越大,表示該顏色越深。如果RGB都是0,就是黑色,如果都為255,就是白色。Alpha也需要在0~255之間變化。Alpha的值越小,顏色就越透明,Alpha的值越大,顏色就不透明。當Alpha的值為0時,顏色完全透明,完全透明的位元影像或者圖形從View上消失。當Alpha的值為255時,顏色不透明。從Alpha的特性可知,設定顏色的透明度實際上就是設定Alpha值。
半透明:<Button android:background="#e0000000" ... />
透明:<Button android:background="#00000000" ... />
顏色和不透明度 (alpha) 值以十六進位標記法表示。任何一種顏色的值範圍都是 0 到 255(00 到 ff)。對於 alpha,00 表示完全透明,ff 表示完全不透明。運算式順序是“aabbggrr”,其中aa=alpha(00 到 ff);bb=blue(00 到 ff);gg=green(00 到 ff);rr=red(00 到 ff)。例如,如果您希望對某疊加層應用不透明度為 50% 的藍色,則應指定以下值:7fff0000

設定顏色的透明度可以通過Paint類的setAlpha方法來完成。因為做項目中,很多時候不需要讓照片完全透明的,所以實驗做了一個可以調節圖片透明度的程式。

例1
本例子通過一個滑杆(SeekBar)組件改變位元影像中顏色的Alpha值(透明度)。顯示位元影像的MyView類的代碼如下:

  private class MyView extends View  {     private Bitmap bitmap;     public MyView(Context context)    {      super(context);      InputStream is =getResources().openRawResource(R.drawable.image);      bitmap = BitmapFactory.decodeStream(is);      setBackgroundColor(Color.WHITE);    }     @Override    protected void onDraw(Canvas canvas)    {      Paint paint = new Paint();      paint.setAlpha(alpha);       canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap         .getHeight()), new Rect(10, 10, 310, 235), paint);     }  }

上面代碼中的drawBitMap方法的第2個參數表示原位元影像的複製地區,在本例中表示複製整個原位元影像。第3個參數表示繪製的目的地區域。
SeekBar組件的onProgressChanged時間方法的代碼如下:

public void onProgressChanged(SeekBar seekBar, int progress,      boolean fromUser)  {    alpha = progress;    setTitle("alpha:" + progress);    myView.invalidate();  }

運行本例,將滑杆移動到靠左和靠右的位置,將會看到如下面兩個圖的效果:

例2
Alpha透明漸層動畫 。 

<alpha>標籤為alpha透明度節點
android:fromAlpha="1.0" 設定動畫起始透明度為1.0 表示完全不透明
android:toAlpha="0.0"設定動畫結束透明度為0.0 表示完全透明
也就是說alpha的取值範圍為0.0 - 1.0 之間

這個動畫布局設定動畫從完全不透明漸層到完全透明。

<?xmlversion="1.0"encoding="utf-8"?><alphaxmlns:android="http://schemas.android.com/apk/res/android"  android:fromAlpha="1.0"  android:toAlpha="0.0"  android:repeatCount="infinite"  android:duration="2000"></alpha>

代碼實現

import android.app.Activity; import android.os.Bundle; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; publicclass AlphaActivity extends Activity {   /**顯示動畫的ImageView**/  ImageView mImageView = null;   /**透明動畫**/  Animation mAnimation = null;   @Override  publicvoid onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.translate);   /**拿到ImageView對象**/  mImageView = (ImageView)findViewById(R.id.imageView);   /**載入透明動畫**/  mAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);   /**播放透明動畫**/  mImageView.startAnimation(mAnimation);   } } 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.