Android實(shí)現(xiàn)GridView中ImageView動(dòng)態(tài)變換的方法
本文實(shí)例講述了Android實(shí)現(xiàn)GridView中ImageView動(dòng)態(tài)變換的方法。分享給大家供大家參考。具體如下:
使用YY影音的時(shí)候,發(fā)現(xiàn)點(diǎn)擊GridView的某一個(gè)Item,Item里面的圖標(biāo)會(huì)在按下的時(shí)候發(fā)生變換,變成另外一個(gè)圖片。
自己寫了一個(gè)類似的demo,具體步驟如下:
1、創(chuàng)建一個(gè)包含Grid的Acitity
2、創(chuàng)建item.xml 里面包含一個(gè)imageview和一個(gè)textview
3、自定義一個(gè)adapter,從baseadapter繼承
4、在getView中為每個(gè)imageView添加setOnTouchListener
代碼入下:
MainActivity.java
package com.mygriddemo;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private GridView gv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gv = (GridView) findViewById(R.id.mygrid);
AddAdapter addadapter = new AddAdapter(this);
gv.setAdapter(addadapter);
}
public class AddAdapter extends BaseAdapter {
private final LayoutInflater mInflater;
private final ArrayList<ListItem> mItems = new ArrayList<ListItem>();
// public static final int ITEM_SHORTCUT = 0;
// public static final int ITEM_APPWIDGET = 1;
// public static final int ITEM_LIVE_FOLDER = 2;
// public static final int ITEM_WALLPAPER = 3;
/**
* Specific item in our list.
*/
public class ListItem {
public final CharSequence text;
public final Drawable image;
//public final int actionTag;
public final Drawable touchimage;
//, int actionTag
public ListItem(Resources res, int textResourceId, int imageResourceId,int touchImageResourceId) {
text = res.getString(textResourceId);
if (imageResourceId != -1) {
image = res.getDrawable(imageResourceId);
} else {
image = null;
}
if (touchImageResourceId != -1) {
touchimage = res.getDrawable(touchImageResourceId);
} else {
touchimage = null;
}
}
}
public AddAdapter(MainActivity launcher) {
super();
mInflater = (LayoutInflater) launcher.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// Create default actions
Resources res = launcher.getResources();
mItems.add(new ListItem(res, R.string.item1,
R.drawable.item1, R.drawable.item1back));
mItems.add(new ListItem(res, R.string.item2,
R.drawable.item2, R.drawable.item2back));
mItems.add(new ListItem(res, R.string.item3,
R.drawable.item3, R.drawable.item3back));
mItems.add(new ListItem(res, R.string.item4,
R.drawable.item4, R.drawable.item4back));
}
public View getView(int position, View convertView, ViewGroup parent) {
final ListItem item = (ListItem) getItem(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.grid_item, parent, false);
}
final TextView textView = (TextView) convertView;//.findViewById(R.id.mygrid);
textView.setTag(item);
textView.setText(item.text);
textView.setCompoundDrawablesWithIntrinsicBounds(null, item.image, null, null);
textView.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
if (arg1.getAction() == MotionEvent.ACTION_DOWN){
Log.d("WeatherWidget", MotionEvent.ACTION_DOWN+"");
textView.setCompoundDrawablesWithIntrinsicBounds(null, item.touchimage, null, null);
}
else if(arg1.getAction() == MotionEvent.ACTION_UP) {
Log.d("WeatherWidget", arg1.getAction()+"");
textView.setCompoundDrawablesWithIntrinsicBounds(null, item.image, null, null);
Intent i = new Intent(MainActivity.this,Page1Activity.class);
startActivity(i);
}
return true;
}
});
return convertView;
}
public int getCount() {
return mItems.size();
}
public Object getItem(int position) {
return mItems.get(position);
}
public long getItemId(int position) {
return position;
}
}
}
main.xml代碼:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <GridView android:id="@+id/mygrid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="2" android:verticalSpacing="10dip" android:horizontalSpacing="10dip" android:stretchMode="columnWidth" android:gravity="center" > </GridView> </LinearLayout>
griditem.xml代碼:
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:layout_centerHorizontal="true" android:drawablePadding="14dip" android:paddingLeft="15dip" android:paddingRight="15dip" android:gravity="center_horizontal" />
希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。
- 詳解Android使GridView橫向水平滾動(dòng)的實(shí)現(xiàn)方式
- Android開發(fā)基于ViewPager+GridView實(shí)現(xiàn)仿大眾點(diǎn)評(píng)橫向滑動(dòng)功能
- Android中實(shí)現(xiàn)多行、水平滾動(dòng)的分頁的Gridview實(shí)例源碼
- android ListView和GridView拖拽移位實(shí)現(xiàn)代碼
- Android GridView實(shí)現(xiàn)滾動(dòng)到指定位置的方法
- android中GridView的用法示例
- android GridView多選效果的實(shí)例代碼
- Android開發(fā)之使用GridView展示圖片的方法
- Android開發(fā)學(xué)習(xí)筆記 Gallery和GridView淺析
- Android GridView仿微信朋友圈顯示圖片
- Android實(shí)現(xiàn)九宮格(GridView中各項(xiàng)平分空間)的方法
- Android開發(fā)實(shí)現(xiàn)橫向列表GridView橫向滾動(dòng)的方法【附源碼下載】
相關(guān)文章
Android中判斷當(dāng)前API的版本號(hào)方法
下面小編就為大家分享一篇Android中判斷當(dāng)前API的版本號(hào)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能
Activity是一個(gè)Android的應(yīng)用組件,它提供屏幕進(jìn)行交互。今天通過本文給大家介紹Android activity實(shí)現(xiàn)延時(shí)跳轉(zhuǎn)功能,感興趣的朋友一起看看吧2021-06-06
解決android Listview的item中最外層Margin失效的問題
下面小編就為大家?guī)硪黄鉀Qandroid Listview的item中最外層Margin失效的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
Android開發(fā)之TabActivity用法實(shí)例詳解
這篇文章主要介紹了Android開發(fā)之TabActivity用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android擴(kuò)展Activity實(shí)現(xiàn)標(biāo)簽頁效果的具體步驟與相關(guān)技巧,需要的朋友可以參考下2016-03-03
Android?APP瘦身shrinkResources使用問題詳解
這篇文章主要為大家介紹了Android?APP瘦身shrinkResources使用問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android自定義圓形View實(shí)現(xiàn)小球跟隨手指移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義圓形View實(shí)現(xiàn)小球跟隨手指移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例
這篇文章主要介紹了Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例,Pull是Android中自帶的XML解析器,Java里也是一樣用:D需要的朋友可以參考下2016-04-04
Android利用Intent.ACTION_SEND進(jìn)行分享
這篇文章主要介紹了Android利用Intent.ACTION_SEND進(jìn)行分享,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
Android自定義相機(jī)Camera實(shí)現(xiàn)手動(dòng)對(duì)焦的方法示例
這篇文章主要介紹了Android自定義相機(jī)Camera實(shí)現(xiàn)手動(dòng)對(duì)焦的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06

