最近学一下ImageView这个控件,毕竟代码还是写着心里有底!
我是参考<android应用开发揭秘>这本书的代码来学习,虽然学得糊里糊涂,至少还是体会到其中的乐趣!闲话好像说多了,直奔主题
书本是利用一个线程来慢慢的减低图片的透明度,然后我直接copy书本的代码然后发现了一些细节吧!喔,忘了说,用的是android studio(AS),版本是android4.0的,不知道为什么2.3这个版本我下载不了...若有大神出来说说原因不胜感激,不过4.0,5.0版本感觉也是可以这样来学了,毕竟已经是主流的android版本了
这是布局
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_above="@+id/textView"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
这是书本的代码,其中有些地方被我改了,改了的部分用红色字体
ImageView imageView;
int alpha = 255; //ImageView的Alpha值
boolean isruning = false; //控制线程
Handler handler = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
isruning = true;
imageView = (ImageView)findViewById(R.id.imageView);
textView = (TextView) findViewById(R.id.textView);
imageView.setImageResource(R.drawable.test01);
imageView.<span style="color:#FF0000;">setImageAlpha</span>(alpha); //书本是setAlpha
//开启一个线程让Alpha的值递减
new Thread(new Runnable() {
@Override
public void run() {
while (isruning) {
try {
Thread.sleep(1000);
Update();
} catch (InterruptedException e){
e.printStackTrace();
}
}
}
}).start();
//接收消息之后更新ImageView的视图
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
imageView.<span style="color:#CC0000;">setImageAlpha</span>(alpha);
textView.setText("Now:" + Float.toString(alpha));
imageView.invalidate();
}
};
}
private void Update() {
if(alpha - 7 >= 0) {
alpha -= 7;
} else {
alpha = 0;
isruning = false;
}
handler.sendMessage(handler.obtainMessage());
}
一开始我完全copy书本的代码时候,没想过android版本的问题,没想到模拟器上面的时候,无论那个alpha的值减低到多少图片都没反应,但减到0的时候,图片就直接不见了,应该是透明度为0吧,后来查了一下,网络说的是API16之前的setAlpha还是有用的,但之后就不流行了,改成是setImageAlpha的了,所以这里给大家说说,注意一下android的版本吧或者这么说注意一下API的等级!