按下时更改图像视图的源图像

我有一个滚动视图与大量的图像button。 我想在按下时更改图像button的图像。 事情是,我希望图像保持,直到另一个图像button被按下。 这就是为什么我不能使用select器。 达到他的最佳做法是什么?

最好的祝福

Solutions Collecting From Web of "按下时更改图像视图的源图像"

你想这样做。

ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage); // when you click this demo button Demo_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.secondimage); } } 

尝试这个。 (更新的setset设置)

更好的解决scheme,使用下面的XML作为图像的来源:

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_activated="true"> <bitmap android:src="@drawable/image_selected"/> </item> <item> <bitmap android:src="@drawable/image_not_selected"/> </item> </selector> @Override public void onClick(View v) { v.setActivated(!v.isActivated()); } 

不要忘记创造这个领域的“乐趣”

试试这个改变image.When imageview被按下

 Like_btn.setOnClickListener(new OnClickListener() { **private boolean fun = true;** public void onClick(View v) { if(fun) { Like_btn.setImageResource(R.drawable.unlike); fun=false; } else { fun=true; Like_btn.setImageResource(R.drawable.like); Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show(); } } }); 

尝试下面的代码: –

 boolean flag=false; ImageButton btn = (ImageButton)findViewById(R.id.btn); // when you click this demo button btn .setOnClickListener(new OnClickListener() { public void onClick(View v) { if (!flag) { btn.setBackgroundResource(R.drawable.imageonpress); flag=true; } else { btn.setBackgroundResource(R.drawable.image); flag=false; } } } 

对我有效的是:

我创build了一个新的可绘制的XML文件,例如,image_state.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <bitmap android:src="@drawable/image_pressed"/> </item> <item> <bitmap android:src="@drawable/image"/> </item> </selector> 

在我的布局文件中,我将imageView的src设置为:

 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image_state"/> 
 ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage); ImageButton second_button = (ImageButton)findViewById(R.id.secondimage); // when you click this demo button Demo_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.secondimage); second_button.setImageResource(R.drawable.firstimage); } } second_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.firstimage); second_button.setImageResource(R.drawable.secondimage); } } 

我希望你想喜欢那个吗?

OnTouchListener对你所要做的事情要好得多:

 myImageButton.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN : myImageButton.setImageResource(R.drawable.image_when_pressed); break; case MotionEvent.ACTION_UP : myImageButton.setImageResource(R.drawable.image_when_released); break; } return false; } }); 
 float alpha_first = 0.2f; float alpha_second = 1.0f; AlphaAnimation alphadp = new AlphaAnimation(alpha_second, alpha_first); switch (v.getId()) { case R.id.disable_deactivate_pic: ImageButton disable_button =(ImageButton)findViewById(R.id.disable_deactivate_pic); if (!flag) { disable_button.setImageResource(R.drawable.enable_active); linearLayout_for_picture = (LinearLayout) findViewById(R.id.linearlayout_imageView_pic); alphadp.setFillAfter(true); linearLayout_for_picture.startAnimation(alphadp); flag=true; } else { disable_button.setImageResource(R.drawable.disable_active); alphadp.setFillAfter(false); linearLayout_for_picture.startAnimation(alphadp); flag=false; } break; 

这似乎是实现它的最短途径,只需要XML,不需要Java代码:

将文件另存为drawable / image_pressable.xml旁边的两个图像:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/image_regular" /> </selector> 

然后参考它:

 <ImageView android:src="@drawable/image_pressable" /> 

如果你有一个ImageView或者ImageButton并且想要改变它的图像,你可以刷新任何按下的活动:

  fav.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int isFavor = c.getInt(c.getColumnIndex("isFavor")); if(isFavor == 1){ db.execSQL("update content set isFavor=0 where ID="+idxx+";"); fav.setImageResource(R.drawable.favnot_ic); Toast.makeText(context.getApplicationContext(),"item cleaned",Toast.LENGTH_LONG).show(); activity.finish(); activity.overridePendingTransition(0, 0); context.startActivity(activity.getIntent()); } else{ db.execSQL("update content set isFavor=1 where ID=" + idxx + ";"); fav.setImageResource(R.drawable.fav_ic); Toast.makeText(context.getApplicationContext(),"Item added...",Toast.LENGTH_LONG).show(); activity.finish(); activity.overridePendingTransition(0, 0); context.startActivity(activity.getIntent()); } } }); 

如果在点击后保存select,然后重新加载图像滚动图库(或滚动菜单),然后重新加载并用replace的图像滚动到所选内容,则可以这样做。 据我所知,没有内置的画廊或菜单function有能力replace图像,一旦他们加载和显示。

你可以使用一个StateListDrawable来实现这一点。 此方法也适用于ImageButton 。 我更喜欢设置额外的听众。

我也编译了一类额外的帮助器: http : //alexanderwong.me/post/40799636705/android-change-background-image-drawable-onpress

  public static StateListDrawable makeStateDrawable(Drawable drawable, Drawable pressedDrawable, Drawable disabledDrawable) { boolean set = false; StateListDrawable stateDrawable = new StateListDrawable(); if (disabledDrawable != null) { set = true; stateDrawable.addState(new int[] { -android.R.attr.state_enabled }, disabledDrawable); } if (pressedDrawable != null) { set = true; stateDrawable.addState(new int[] { android.R.attr.state_pressed }, pressedDrawable); } if (drawable != null) { set = true; stateDrawable.addState(new int[0], drawable); } return set ? stateDrawable : null; } 

如果你已经有一个button在你的应用程序,将做两个图片之间的交换你有它点击时有一个简单的代码:D

//在android中添加图片,我们只需将它们从他们的位置复制过去(res – > drawable)“

//然后拖放“ImageView”并select要显示的图像

//你可以调整比例投掷“scaleType,layout_Width&layout_Height”

 public boolean swap = true; public void change(View view) { ImageView i = (ImageView) findViewById(R.id.img); if (swap) { i.setImageResource(R.drawable.images); swap=false; } else { swap=true; i.setImageResource(R.drawable.couple); } } 
 Demo_button.setImageResource(R.drawable.secondimage) //Demo_button is your event holder (the button or imageview or bitmap file which contains the image) and secondimage is your image (drawable) file, without any complications. 

这是诀窍。