是这样的:基本实现了这个功能,但是呢。这个gesture的响应的滑动只能在ViewFlipper中没有Item的地方滑动,而在有Item内容的地方,根本就不响应。所以其实只有在item上边一小条的地方滑动~~。但是我现在实现的是可以在ViewFlipper所有地方都能响应OnFling()函数,Item只要能响应自身的click就可以了。 如何实现??我把代码贴出来:
————————————————————
package wyf.ytl;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector.OnGestureListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ViewFlipper;public class Common_Channels extends Activity implements OnGestureListener{
ListView ListView1,ListView2,ListView3;
//BaseAdapter ba1,ba2,ba3;
BaseAdapter ba;
GestureDetector detector;
ViewFlipper flipper;
LinearLayout layout;
int [] drawableIds={
R.drawable.andy, R.drawable.bill, R.drawable.edgar, R.drawable.torvalds,
R.drawable.turing
};
int[] msgIds={ R.string.andy, R.string.bill , R.string.edgar ,R.string.torvalds,
R.string.turing
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
flipper=new ViewFlipper(this);
detector = new GestureDetector(this);
InitListView();
InitFliper();
layout=new LinearLayout(this);
layout.addView(flipper);
setContentView(layout);
}
public boolean InitFliper(){
flipper.addView(ListView1);
flipper.addView(ListView2);
flipper.addView(ListView3);
return true;
}
public boolean InitListView(){
//BaseAdapter temp_ba=new BaseAdapter()
ba=new BaseAdapter(){
public int getCount() {
return 5;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll=new LinearLayout(Common_Channels.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setPadding(5,5,5,5);
ImageView ii=new ImageView(Common_Channels.this);
ii.setImageDrawable(getResources().getDrawable(drawableIds[position]));
ii.setScaleType(ImageView.ScaleType.FIT_XY);
ii.setLayoutParams(new Gallery.LayoutParams(100, 98));
ll.addView(ii);
TextView tv=new TextView(Common_Channels.this);
tv.setText(getResources().getText(msgIds[position]));
tv.setTextSize(24);
tv.setTextColor(Common_Channels.this.getResources().getColor(R.color.white));
tv.setPadding(5, 5, 5, 5);
tv.setGravity(Gravity.LEFT);
ll.addView(tv);
return ll;
}
};
/*
ba1=temp_ba;
ba2=temp_ba;
ba3=temp_ba;
*/
ListView1=new ListView(Common_Channels.this);
ListView2=new ListView(Common_Channels.this);
ListView3=new ListView(Common_Channels.this);
ListView1.setAdapter(ba);
ListView2.setAdapter(ba);
ListView3.setAdapter(ba);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
Log.i("Fling", "Activity onTouchEvent!");
return this.detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.i("Fling", "Fling Happened!");
if (e1.getX() - e2.getX() > 120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
this.flipper.showNext();
} else if (e1.getX() - e2.getX() < -120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
this.flipper.showPrevious();
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) { }
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}帮我想想方法啦~~
————————————————————
package wyf.ytl;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector.OnGestureListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ViewFlipper;public class Common_Channels extends Activity implements OnGestureListener{
ListView ListView1,ListView2,ListView3;
//BaseAdapter ba1,ba2,ba3;
BaseAdapter ba;
GestureDetector detector;
ViewFlipper flipper;
LinearLayout layout;
int [] drawableIds={
R.drawable.andy, R.drawable.bill, R.drawable.edgar, R.drawable.torvalds,
R.drawable.turing
};
int[] msgIds={ R.string.andy, R.string.bill , R.string.edgar ,R.string.torvalds,
R.string.turing
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
flipper=new ViewFlipper(this);
detector = new GestureDetector(this);
InitListView();
InitFliper();
layout=new LinearLayout(this);
layout.addView(flipper);
setContentView(layout);
}
public boolean InitFliper(){
flipper.addView(ListView1);
flipper.addView(ListView2);
flipper.addView(ListView3);
return true;
}
public boolean InitListView(){
//BaseAdapter temp_ba=new BaseAdapter()
ba=new BaseAdapter(){
public int getCount() {
return 5;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout ll=new LinearLayout(Common_Channels.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setPadding(5,5,5,5);
ImageView ii=new ImageView(Common_Channels.this);
ii.setImageDrawable(getResources().getDrawable(drawableIds[position]));
ii.setScaleType(ImageView.ScaleType.FIT_XY);
ii.setLayoutParams(new Gallery.LayoutParams(100, 98));
ll.addView(ii);
TextView tv=new TextView(Common_Channels.this);
tv.setText(getResources().getText(msgIds[position]));
tv.setTextSize(24);
tv.setTextColor(Common_Channels.this.getResources().getColor(R.color.white));
tv.setPadding(5, 5, 5, 5);
tv.setGravity(Gravity.LEFT);
ll.addView(tv);
return ll;
}
};
/*
ba1=temp_ba;
ba2=temp_ba;
ba3=temp_ba;
*/
ListView1=new ListView(Common_Channels.this);
ListView2=new ListView(Common_Channels.this);
ListView3=new ListView(Common_Channels.this);
ListView1.setAdapter(ba);
ListView2.setAdapter(ba);
ListView3.setAdapter(ba);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
Log.i("Fling", "Activity onTouchEvent!");
return this.detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.i("Fling", "Fling Happened!");
if (e1.getX() - e2.getX() > 120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
this.flipper.showNext();
} else if (e1.getX() - e2.getX() < -120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
this.flipper.showPrevious();
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) { }
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}帮我想想方法啦~~
解决方案 »
- 求百度地图高手帮忙,毕业设计遇到难题了
- android2.3.4的touch事件传递过程 求教
- 求高手解决android调用webservice问题
- android修改properties配置文件
- android外部扩展库的移植方法
- android开发问题 多路由器的 局域网通信.txt
- ubuntu下载android源码2.3.3—r1版本,卡在Fetching projects: 100% (165/165), done.
- android任务栈问题 在一个App (demo)里面:一个activity A 开启了一个服务,这个服务在发现应用B开启时start了一个本应用的ac
- 新浪获得用户数据提示javax.net.ssl.SSLpeerUnverIfied错误
- 有两个界面的布局效果简图, 求实现思路, 提供代码更好, 我是新手
- 关于圆形progressbar的问题,不是有关于颜色的
- activity 跳转过程时出现黑屏?
return this.detector.onTouchEvent(event);
}
还有呢,就是每一个ListView也自然能够 vertical方向上的scroll的~
ListView1.setOnTouchListener(new OnTouchListener(){ @Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.i("ListView1", "ListView1 onTouchEvent!");
Common_Channels.this.detector.onTouchEvent(event);
return false;
}
});
{ @Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.i("tag", "gridview onTouch");
OrderActivity.this.mGestureDetector.onTouchEvent(event);
return false;
}
});为啥我这样写,在gridview的区域里面还是不能拖动