1:每一次我点图标都会将图标设置成被点击状态,如何在点击与被点击状态之间转换
1.1 点击时设置图片
switch (v.getId())
{
case R.id.iv_menu_0:
imageView[0].setImageDrawable(getResources().getDrawable(
R.drawable.guide_home_on));
// Background(getResources().getDrawable(R.drawable.guide_home_on));
System.out.println("0");
break;
case R.id.iv_menu_1:
imageView[1].setImageDrawable(getResources().getDrawable(
R.drawable.guide_discover_on));
System.out.println("1");
break;
个人想法是:
每次点击对控件进行设置图片,并取消对其他图片的设置。
但是如何取消非点击对象,就有一些麻烦了,
1考虑下可以把底部按钮替换成ridio,这样就只能选其中一个。
2对非点击按钮进行循环设置
3看实例是如何解决这一问题的。
通过old_img_id old_view_id记录刚刚的位置,进行设置
@Override
public void onClick(View v)
{
int old_img_Id = R.id.iv_menu_0;
int old_view_Id = 0;
switch (v.getId())
{
case R.id.iv_menu_0:
imageView[0].setImageDrawable(getResources().getDrawable(
R.drawable.guide_home_on));
old_img_Id = bt_menu_id[0];
old_view_Id = 0;
// Background(getResources().getDrawable(R.drawable.guide_home_on));
System.out.println("0");
break;
case R.id.iv_menu_1:
示例给出的逻辑是:
定义2个数组,一个是
底部未选中的菜单图片ziyuan
底部菜单选中时的图片资源
// 界面底部的选中菜单按钮资源
private int[] select_on = { R.drawable.guide_home_on, R.drawable.guide_tfaccount_on, R.drawable.guide_discover_on, R.drawable.guide_cart_on, R.drawable.guide_account_on };
// 界面底部的未选中菜单按钮资源
private int[] select_off = { R.drawable.bt_menu_0_select, R.drawable.bt_menu_1_select, R.drawable.bt_menu_2_select, R.drawable.bt_menu_3_select, R.drawable.bt_menu_4_select };
示例给出 设置图片方法的位置并非在switch case 方法中,
而是定义了一个方法,每次执行结束后循环设置图片资源;
// 设置按钮的选中和未选中资源
for (int i = 0; i < bt_menu.length; i++) {
bt_menu[i].setImageResource(select_off[i]);
if (v.getId() == bt_menu_id[i]) {
bt_menu[i].setImageResource(select_on[i]);
}
}
}
完整代码
package com.example.newbe.home;
import com.example.newbe.R;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
/**
* 整改程序最底层的框架Activity,所有的fragment都是依赖于次activity 而存在的
*
* @author luocaca
*
*/
public class Main_FA extends FragmentActivity implements OnClickListener
{
private ImageView imageView[] = new ImageView[5];
private int[] bt_menu_id =
{ R.id.iv_menu_0, R.id.iv_menu_1, R.id.iv_menu_2, R.id.iv_menu_3,
R.id.iv_menu_4 };
private int[] select_on =
{ R.drawable.guide_home_on, R.drawable.guide_tfaccount_on,
R.drawable.guide_discover_on, R.drawable.guide_cart_on,
R.drawable.guide_account_on };
private int[] select_off =
{ R.drawable.bt_menu_0_select, R.drawable.bt_menu_1_select,
R.drawable.bt_menu_2_select, R.drawable.bt_menu_3_select,
R.drawable.bt_menu_4_select };
/**
* private int[] select_off = { R.id.iv_menu_0, R.id.iv_menu_1,
* R.id.iv_menu_2, R.id.iv_menu_3, R.id.iv_menu_4 };
*/
@Override
protected void onCreate(Bundle onsavBundle)
{
// TODO Auto-generated method stub
super.onCreate(onsavBundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.main_fa);
initView();// 初始化组件
}
/**
* 初始化组件,找到底部5个控件,并设置监听 1.每个都findbyid 2.数组搜索
*/
public void initView()
{
/**
* 获取对象,设置监听
*/
for (int i = 0; i < imageView.length; i++)
{
imageView[i] = (ImageView) findViewById(bt_menu_id[i]);
imageView[i].setOnClickListener(this);
}
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.iv_menu_0:
System.out.println("0");
break;
case R.id.iv_menu_1:
System.out.println("1");
break;
case R.id.iv_menu_2:
System.out.println("2");
break;
case R.id.iv_menu_3:
System.out.println("3");
break;
case R.id.iv_menu_4:
System.out.println("4");
break;
default:
break;
}
/**
* 循环设定图标 for (int i = 0; i < bt_menu.length; i++) {
* bt_menu[i].setImageResource(select_off[i]); if (v.getId() ==
* bt_menu_id[i]) { bt_menu[i].setImageResource(select_on[i]); } }
*/
for (int i = 0; i < bt_menu_id.length; i++)
{
// imageView[i].setImageDrawable(getResources().getDrawable(
// select_off[i]));
System.out.println("i--=" + i);
imageView[i].setImageResource(select_off[i]);
if (v.getId() == bt_menu_id[i])
{
System.out.println("v.getId()=" + v.getId());
imageView[i].setImageResource(select_on[i]);
}
}
}
}