图标变化应该如何处理

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]);
}


}
}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值