解决方案 »
- 新手请教:conn.getInputStream();报错
- 发帖,散分,求推荐,版主任说标题要长..............................
- java语言(android)如何将一个长字符串转化为一个短字符串!!!
- notification上的图标设置后,呈拉伸状态,如何设置居中并保持图片大小不拉伸
- 服务器端的数据只能给自己的android APPS访问,其他人截取不到 要什么标识
- android 怎样获得gallery中图片的名字
- 安卓客户端的服务器ip写死了,如果更换服务器怎么办?
- 关于dialog的问题
- 正常运行项目没问题断点调试app就崩了(用的是AndroidStudio3.1.2 java8)
- 一个关于PendingIntent的问题
- 想做一个音乐app
- 做了3年应用,感觉很恐慌,很迷茫
你虽然指定了对象和view的绑定关系,即你指定了R.drawable.pic1应该放到R.id.gif所指的View里,但是你并没有说明这个view是怎么展示这个数据的。因为View有多种设置数据的方式。比如imageview其实并不只有一个setImageBitmap方法。
建议复杂的listitem的话,直接写一个继承自BaseAdapter的类来完成,重写getView方法,来指定你的每个view是怎么使用绑定的数据集的。用viewholder还可以作到优化,具体写法像这样:
private class PictureAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public PictureAdapter(Context context){
this.mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView holder;
if (convertView == null){
int lid = R.layout.map_ontap_grid;;
holder = new ImageView(MapActivity.this);
convertView = mInflater.inflate(lid, null);
holder = (ImageView) convertView.findViewById(R.id.mapgridimage);
convertView.setTag(holder);
} else{
holder = (ImageView) convertView.getTag();
}
holder.setImageBitmap(PicInfoList.get(mSet.get(mPicSet.get(index).get(position))).bitmap);
return convertView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mPicSet.get(index).size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return PicInfoList.get(mSet.get(mPicSet.get(index).get(position))).bitmap;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
}
这个PicInfoList是什么?里面的参数是什么格式的?
我的Activity如下。都不知道怎么改了。。
package com.xyyj.sharefeelingsapp.main;import java.util.ArrayList;import com.ant.liao.GifView;
import com.xyyj.sharefeelingsapp.R;
import com.xyyj.sharefeelingsapp.main.util.ActivityManage;import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;@SuppressLint("NewApi")
public class MainActivity extends Activity implements OnClickListener {
private View view1,view2,view3;//需要滑动的页卡
private ArrayList<View> viewList ;//页面集合
private ViewPager viewPager;//页卡容器
private ImageView imageView;// 动画图片
private int offset = 0;// 动画图片偏移量
private int currIndex = 0;// 当前页卡编号
private int bmpW;// 动画图片宽度
private GifView gf1;
private int count=0;
private ImageView image1;
@Override
public void onClick(DialogInterface dialog, int which) { }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去除标题栏
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// 取消状态栏,充满全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
/**
* 添加到容器管理,统一销毁机制
*/
ActivityManage.getInstance().addActivity(this);
/**
* 初始化加载
*/
initImageView();
initViewPager();
}
public void initImageView() {
imageView= (ImageView) findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a).getWidth();// 获取图片宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;// 获取分辨率宽度
offset = (screenW / 3 - bmpW) / 2;// 计算偏移量
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
imageView.setImageMatrix(matrix);// 设置动画初始位置
}
public void initViewPager() {
view1 = findViewById(R.layout.recordmood);
view2 = findViewById(R.layout.sharemood);
view3 = findViewById(R.layout.countchart);
LayoutInflater lf = getLayoutInflater().from(this);
view1 = lf.inflate(R.layout.recordmood, null);
view2 = lf.inflate(R.layout.sharemood, null);
view3 = lf.inflate(R.layout.countchart, null);
viewList = new ArrayList<View>();//将要分页显示的View装入数组中
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewPager = (ViewPager) findViewById(R.id.viewpaper);
PagerAdapter pagerAdapter =new PagerAdapter() { @Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
container.removeView(viewList.get(position));
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
/**
* 这里面可以添加当前布局文件里的按钮点击事件
*/
return viewList.get(position);
}
};
viewPager.setAdapter(pagerAdapter);
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
/**
* 记录心情点击事件
* @param view
*/
public void recordClick(View view) {
MyOnClickListener(0, view);
/* count+=1;
int bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.logo_qzone).getWidth();// 获取图片宽度
gf1 = (GifView)findViewById(R.id.gif1);
gf1.setGifImage(R.drawable.recordclick);
gf1.setLayoutParams(new LinearLayout.LayoutParams(bmpW, 80));
if(count>3) {
count = 1;
}
if(count==1){
image1 = (ImageView) findViewById(R.id.image1);
image1.setVisibility(View.GONE);
gf1.showAnimation();
gf1.setVisibility(View.VISIBLE);
}else if(count==2){
gf1.showCover();
}else if(count==3) {
gf1.setVisibility(View.GONE);
image1.setVisibility(View.VISIBLE);
}*/
}
/**
* 分享心情
* @param fragment
*/
public void shareClick(View view) {
MyOnClickListener(1, view);
}
/**
* 图形统计
* @param fragment
*/
public void chartClick(View view) {
MyOnClickListener(2, view);
}
/**
* 点击事件
* @param index
* @param view
*/
public void MyOnClickListener(int index, View view) {
/**
* 设置点击动画效果
*/
Animation clickAnimation = AnimationUtils.loadAnimation(this,R.anim.bn_zoom);
view.startAnimation(clickAnimation);
viewPager.setCurrentItem(index); // 设置点击后,显示选中的fragment
}
/**
* 页面改变时的监听事件。
* @author ws
*
*/
public class MyOnPageChangeListener implements OnPageChangeListener{ int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量
int two = one * 2;// 页卡1 -> 页卡3 偏移量 public void onPageScrollStateChanged(int arg0) { } public void onPageScrolled(int arg0, float arg1, int arg2) { } public void onPageSelected(int arg0) {
/*
Animation animation = null;
switch (arg0) {
case 0:
if (currIndex == 1) {
animation = new TranslateAnimation(one, 0, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, 0, 0, 0);
}
break;
case 1:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, one, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, one, 0, 0);
}
break;
case 2:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, two, 0, 0);
} else if (currIndex == 1) {
animation = new TranslateAnimation(one, two, 0, 0);
}
break;
}
*/
Animation animation = new TranslateAnimation(one*currIndex, one*arg0, 0, 0);
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(300);
imageView.startAnimation(animation);
Toast.makeText(MainActivity.this, "您选择了"+ viewPager.getCurrentItem()+"页卡", Toast.LENGTH_SHORT).show();
} }}
http://download.csdn.net/detail/u010663321/7506607