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

首頁 > 系統 > Android > 正文

android view實現一張圖片的漸隱效果

2019-10-21 21:48:25
字體:
來源:轉載
供稿:網友

因為一個Android項目的緣故要在軟件打開界面輪流顯示兩張照片,不想讓兩張圖片替換的太生硬,所以讓其中一張圖片漸隱,逐漸顯示第二張圖片。

方法有三種,

第一種:

將漸隱的圖片做好幾張,透明度從255----0.這樣輪流顯示不同透明度的圖片,出現漸隱效果。但是,這種方法浪費資源,舍棄。(在view中繪畫)

第二種:

只用一張圖片,將圖片的每一點的像素信息保存到數組中,每一點像素是ARGB的方式,正好32位,放到一個int類型的值中。然后改變int值的高八位的大小,實現對alpha值的改變。在將改變的數組信息創造一張新的圖片就可以了。

本文重點介紹這一種方法。(在view中繪畫)

第三種:

前兩種都是在view中實現,也可以再布局中實現,用imageswitcher和進出動畫來實現,這個方法在下一篇中介紹。

要實現的效果:

第一張圖片顯示1秒后,逐漸隱藏,第二張圖片出現。

效果很簡單就不貼圖了。總共兩個文件,一個activity一個view。

代碼呈上:

Activity:

package liu.com.kiexun; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message; public class SimpleTestActivity extends Activity {  /** Called when the activity is first created. */ SimpleFlash simpleFlash; boolean flag=true; private Handler handler=new Handler() {  public void handleMessage(Message msg)  {  switch(msg.what)  {   case 1:   if (flag)   {    try    {    Thread.sleep(1000);//第一張圖片時間顯示為1秒    } catch (InterruptedException e)    {    // TODO Auto-generated catch block    e.printStackTrace();    }    flag=false;   }     simpleFlash.invalidate();    break;     default:   break;    }    };  };  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //在這里才產生contex,才可以對view進行初始化    simpleFlash=new SimpleFlash(this,handler);    setContentView(simpleFlash);  }}

view:

package liu.com.kiexun;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.os.Handler;import android.os.Message;import android.view.MotionEvent;import android.view.View; public class SimpleFlash extends View{  int index=0; int size=480*800; Bitmap firstBitmap,secondBitmap; Canvas canvas=null; int pixels[]=new int[size]; Handler handler ; int changeArrary[]=  {  (1<<31)-1,   (1<<30)-1,    (1<<29)-1,    (1<<28)-1,    (1<<27)-1,    (1<<26)-1,    (1<<25)-1,    (1<<24)-1  };  int changeArrary2[]={/*  11111110     11111100    11111000   11110000   11100000     11000000     10000000           01111111  00111111  00011111  00001111   00000111   00000011  00000001  00000000     1<<32 相當于沒有進行移位 >=32位的時候與移的為數是與32的余數 */   ( ( (1<<31)-1 )+(1<<31)-(1<<24) ),  ( ( (1<<31)-1 )+(1<<31)-(1<<24)-(1<<25) ),  ( ( (1<<31)-1 )+(1<<31)-(1<<24)-(1<<25)-(1<<26) ),  ( ( (1<<31)-1 )+(1<<31)- (1<<24)-(1<<25)-(1<<26)-(1<<27)),  ( ( (1<<24)-1 )+(1<<31)+(1<<30)+(1<<29)),  ( ( (1<<24)-1 )+(1<<31)+(1<<30)),  ( ( (1<<24)-1 )+(1<<31)),  (1<<31)-1,    (1<<30)-1,    (1<<29)-1,    (1<<28)-1,    (1<<27)-1,    (1<<26)-1,    (1<<25)-1,  (1<<24)-1   }; public SimpleFlash(Context context,Handler handler) { super(context); this.handler=handler; // TODO Auto-generated constructor stub firstBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.about); secondBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.help); firstBitmap.getPixels(pixels, 0, 480, 0, 0, 480, 800); } /* * (non-Javadoc) * @see android.view.View#onDraw(android.graphics.Canvas) * draw函數執行完畢才能顯示出圖片,應該是執行完畢后才能提交繪畫消息 */ public void onDraw(Canvas canvas) { this.canvas=canvas; canvas.drawBitmap(secondBitmap, 0, 0, null); /*  * 不會先顯示第二個圖片,5秒后在顯示第一個圖片  */ firstBitmap=Bitmap.createBitmap(pixels, 480, 800,Config.ARGB_8888); canvas.drawBitmap(firstBitmap, 0, 0, null);  changePixels(); try {  Thread.sleep(100); } catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } }  public void changePixels() { if (index<8) {  for (int i = 1; i < pixels.length; i++)  {  pixels[i]=pixels[i]&changeArrary[index];  }  index++;  Message changeMessage=new Message();  changeMessage.what=1;  handler.sendMessage(changeMessage);  } } }

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓝山县| 梅河口市| 佳木斯市| 乐安县| 仁寿县| 梨树县| 万荣县| 普安县| 朔州市| 满城县| 区。| 宜君县| 冷水江市| 罗定市| 龙口市| 永和县| 琼海市| 盐山县| 瓮安县| 阿拉善盟| 普陀区| 哈尔滨市| 云和县| 新宁县| 安多县| 额敏县| 西畴县| 岑巩县| 岱山县| 微山县| 左云县| 太谷县| 田阳县| 如皋市| 曲水县| 都昌县| 祁东县| 宜都市| 肇庆市| 南溪县| 龙山县|