随着盒子的广泛使用,以及 智能电视的普及,大屏的android设备进入到各家各户,由于观看电视据电视较远,我们希望焦点在跳变的时候,能有一种放大作用,能让人眼清晰的识别焦点在哪位置上,一些放大效果就出现了,GridView作为一种常见的控件,经常用到,但是要在原生的GridView中实现放大,总是有这样那样的问题,根据本人的经验,讲下GridView 如何实现放大效果。
首先我们看一看一般的gridview放大,我们都是在getView中通过监听focus事件实现放大效果,当获得焦点时,加载放大动画,失去焦点时,加载缩小动画,愿望是美好的,那么这种放大效果如何
private GridView mGridView;
private List<Integer> mList=new ArrayList<Integer>();
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_common);
mList=initList();
mGridView=(GridView) findViewById(R.id.common_gridview);
adapter=new MyAdapter();
mGridView.setAdapter(adapter);
}
private List<Integer> initList() {
List<Integer> list=new ArrayList<Integer>();
list.add(R.drawable.bailain);
list.add(R.drawable.baimei);
list.add(R.drawable.fenlinghua);
list.add(R.drawable.fusanghua);
list.add(R.drawable.haitanghua);
list.add(R.drawable.hongmei);
list.add(R.drawable.hehuanhua);
list.add(R.drawable.lianhua);
list.add(R.drawable.lanhua);
return list;
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
holder=new ViewHolder();
convertView=LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_common, null);
holder.image=(ImageView) convertView.findViewById(R.id.image_common);
holder.text=(TextView) convertView.findViewById(R.id.name_common);
convertView.setTag(holder);
}else {
holder=(ViewHolder) convertView.getTag();
}
holder.image.setImageBitmap(getBitmapFromId(mList.get(position)));
holder.text.setText(getTextFromId(mList.get(position)));
convertView.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Animation animation=AnimationUtils.loadAnimation(getApplicationContext(), R.anim.enlarg);
v.startAnimation(animation);
}else {
Animation animation=AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shrink);
v.startAnimation(animation);
}
}
});
return convertView;
}
class ViewHolder{
ImageView image;
TextView text;
}
private CharSequence getTextFromId(Integer integer) {
String string = null;
switch (integer) {
case R.drawable.bailain:
string="bailain";
break;
case R.drawable.baimei:
string="baimei";
break;
case R.drawable.fenlinghua:
string="fenlinghua";
break;
case R.drawable.fusanghua:
string="fusanghua";
break;
case R.drawable.guihua:
string="guihua";
break;
case R.drawable.hehuanhua:
string="hehuanhua";
break;
case R.drawable.hongmei:
string="hongmei";
break;
case R.drawable.lanhua:
string="lanhua";
break;
case R.drawable.lianhua:
string="lianhua";
break;
case R.drawable.haitanghua:
string="haitanghua";
break;
default:
break;
}
return string;
}
private Bitmap getBitmapFromId(Integer integer) {
Bitmap bitmap = null;
switch (integer) {
case R.drawable.bailain:
bitmap=BitmapFactory.decodeResourc