一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - android view實現一張圖片的漸隱效果

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

2022-03-09 15:03cozyman Android

這篇文章主要為大家詳細介紹了android view實現一張圖片的漸隱效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

方法有三種,

第一種:

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

第二種:

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

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

第三種:

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

要實現的效果:

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

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

代碼呈上:

Activity:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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);
 }
 }
 
}

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

原文鏈接:https://blog.csdn.net/hadahuluwa/article/details/7423800

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品国产麻豆国产自产在线 | 强波多野结衣女教师 | 久久久久久久久女黄9999 | 国产免费美女视频 | 狠狠色狠狠色综合曰曰 | 国产精品九九免费视频 | 日韩人成免费网站大片 | 欧美午夜视频一区二区三区 | 国产欧美一区二区精品性色99 | 国产女乱淫真高清免费视频 | 8x8x极品国产在线 | 十六一下岁女子毛片免费 | 国产精品免费看久久久香蕉 | 草草影院免费 | 欧美kkk4444在线观看 | 欧美高清一区 | 男生和女生艹逼 | 亚洲日日做天天做日日谢 | 青青青视频蜜桃一区二区 | 亚洲一区二区三区深夜天堂 | 国产麻豆剧果冻传媒观看免费视频 | 国内精品91久久久久 | 美女无内裤下部黄 | 性直播免费 | 亚洲天堂视频在线免费观看 | 国产精品乱码高清在线观看 | 嫩草影院久久99 | 99久久无色码中文字幕 | 美女脱了内裤打开腿让人桶网站o | 91麻豆影视 | 日本高清视频网址 | 女人张开腿 让男人桶个爽 免费观看 | 波多野结衣52部合集在线观看 | 99热这里只有精品国产免费 | 热久久天天拍天天拍热久久2018 | 日本连裤袜xxxxx在线视频 | 天天操天天干天天做 | 日本大巴车强thepro | 国产高清免费在线 | 九九99九九精彩 | 午夜一区二区福利视频在线 |