android利用ImageView点击按钮切换图片
本文章中采用ImageView中的setDrawable方法
- setImageDrawble使用drable资源
- 布局文件:在layout目录下的activity_main.xml下编写
- 导入图片:复制粘贴到drable目录下方
- 简单的方法:
ImageView iv=findViewById(R.id.image); //定义图片视图 - `
具体代码:
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="359dp"
android:layout_height="459dp"
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=".MainActivity">
<TextView
android:text="@string/hello_world"
android:id="@+id/textView"
android:textSize="28dp"
android:layout_width="match_parent" //与父类一样
android:layout_height="match_parent"
android:background="@drawable/tieta1"
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=".MainActivity"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true" //将本控件置于父控件水平方向的中心位置
android:layout_centerVertical="true" //将本控件置于父控件垂直方向的中心位置
android:src="@drawable/tieta2" //src:定义横向和纵向的显示方式
android:id="@+id/imageView1"
/>
</RelativeLayout>
注:部分属性解释
- @dimen/activity_vertical_margin
这个的意思就是在你的values文件夹下面的dimens文件里面有一个name叫做activity_vertical_margin的项,这个项里面值就是你android:paddingBottom的值
比如10dp android:paddingBottom=“@dimen/activity_vertical_margin”
就等于android:paddingBottom=“10dp”
如图: - tools:context="activity name"
-本例子中是 tools:context=".MainActivity"
-这一句不会被打包进APK。
只是ADT的Layout Editor在你当前的Layout文件里面设置对应的渲染上下文,说明你当前的Layout所在的渲染上下文是activity name对应的那个activity;
如果这个activity在manifest文件中设置了Theme,那么ADT的Layout Editor会根据这个Theme来渲染你当前的Layout。就是说如果你设置的MainActivity设置了一个Theme.Light(其他的也可以);
那么你在可视化布局管理器里面看到的背景、控件的就应该是Theme.Light的样子。仅用于给你看所见即所得的效果而已。 - android:layout_centerHorizontal:
-用于相对布局(RelativeLayout)的子控件居中。
android:gravity用于控件里的内容怎么显示。值为center_horizontal就是你想要的button上字居中,等同android:gravity=“center”。 - layout_centerVertical
让这个相对布局,处于它父控件的垂直方向的中心
android:layout_centerHorizontal=“true” --将本控件置于父控件水平方向的中心位置
android:layout_centerVertical=“true” --将本控件置于父控件垂直方向的中心位置
android:layout_centerVertical=“true” --将控件置于垂直方向的中心位置
3.##### MainActivity.java
具体代码
package com.example.acer.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
ImageView iv; //定义imageView
boolean isChanged = false;
@Override
protected void onCreate(Bundle savedInstanceState) { //设置点击监听事件
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView) findViewById(R.id.imageView1); //对应:android:id="@+id/imageView1
iv.setOnClickListener(new View.OnClickListener() {
@Override //方法重写
public void onClick(View v) {
// TODO Auto-generated method stub
iv.setImageResource(R.drawable.tieta2); //设置ImageView的内容为指定id的资源
if (v == iv) {
if (isChanged) {
iv.setImageDrawable(getResources().getDrawable(R.drawable.tb)); //调用方法
} else {
iv.setImageDrawable(getResources().getDrawable(R.drawable.tieta2));
}
isChanged = !isChanged;
}
}
});
}
}
- setImageResource():设置ImageView的内容为指定id的资源。
- setImageDrawable():设置ImageView的内容为指定的Drawable对象
- 实际界面