更改视图onClick coverflow – Android

我正在使用这个CoverFlow: http : //www.inter-fuser.com/2010/02/androidcoverflow-widget-v2.html

我希望能够改变视图,当我点击一个button,该button是一个后退/前进的图标,将带你到上一个/下一个项目在封面stream。

我已经稍微修改了coverflow,以便使用XML布局。

这是我的onCreate()方法:

setContentView(R.layout.main); CoverFlow coverFlow = (CoverFlow)findViewById(R.id.coverflow); coverFlow.setAdapter(new ImageAdapter(this)); ImageAdapter coverImageAdapter = new ImageAdapter(this); coverFlow.setAdapter(coverImageAdapter); coverFlow.setSpacing(-20); coverFlow.setSelection(0, true); coverFlow.setAnimationDuration(1000); tv = (TextView)findViewById(R.id.textView1); coverFlow.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(getBaseContext(), String.valueOf(arg2), Toast.LENGTH_SHORT).show(); } }); coverFlow.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { tv.setText(String.valueOf(arg2)); } @Override public void onNothingSelected(AdapterView<?> arg0) { // Do something } }); 

我的XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/home_background" android:orientation="vertical" > <com.demo.app.coverflow.CoverFlow android:id="@+id/coverflow" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="39dp" android:layout_marginLeft="35dp" android:background="@drawable/button_left" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_marginBottom="39dp" android:layout_marginRight="35dp" android:background="@drawable/button_right" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="55dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="hello" android:textColor="@color/White" android:textSize="16dp" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:layout_marginRight="170dp" android:layout_marginTop="15dp" android:src="@drawable/unsa_logo" /> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="14dp" android:layout_marginTop="23dp" android:src="@drawable/pnc_logo" /> </RelativeLayout> 

Solutions Collecting From Web of "更改视图onClick coverflow – Android"

感谢David,我是Mike的同事之一,但我从来没有写过一行Java。 我在我们公司的iOS部门工作。 我明白你在说什么。 你的答案是有益的,写得很好!

我只需要添加:

 if ( currentimageposition < coverFlow.getcount()-1) { coverFlow.setSelection(currentImagePosition +1, true); currentImagePosition = currentImagePosition +1; } 

因为你的onItemSelected没有被调用(更新当前标记),所以我不知道为什么。

但是, coverFlow.selection( int , bool)不是animation的。 视图加载时只是一个设置方法。 例如, coverFlow.selection(3,true)将在封面stream的中心设置第四个图像。

当我试图找出如何添加animation时,我碰到了这一切只是在一行:

向左走

coverFlow.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(0, 0));

向右走

coverFlow.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(0, 0));

(只需将每一行添加到其各自的buttononclick方法

希望这可以帮助任何发现他们自己的人在同样的情况下,我是:)

我希望我明白你的问题。 如果是这样,这是一个想法:

您需要存储一个私有实例variables,用于跟踪从封面stream中显示的图像的当前位置。 然后,您从inheritance自Gallery的setOnItemSelectedListener()方法更新它。 在“后退”或“前进”button上,您可以根据按下的button简单地设置当前的select+/- 1。

所以在你的活动,添加一个实例variablesint将跟踪的位置像…

 public class MyActivity { private int currentImagePosition = -1; //add the rest of your onCreate code here... } 

接下来,您需要能够更新当前在封面stream中显示的图像的当前位置。 你可以通过像这样覆盖setOnItemSelectedListener来实现(在你的onCreate方法中):

 coverFlow.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { currentImagePosition = position; //this will update your current marker } }; 

最后,你所要做的就是通过使用setSelection( currentImagePosition+1 )setSelection( currentImagePosition-1 )来设置每个button的onclick监听器改变为上一个或下一个图像。 顺便说一下, setSelection()真假参数是做什么的? 我不确定它是怎么做的,所以我只是想像你最初那样使用true 。 你的onCreate()方法现在看起来像这样:

 @Override public void onCreate(Bundle savedInstanceState){ //insert your other code in onCreate here in this spot.... //add the following lines to your code: Button goLeft = (Button) findViewById(R.id.button1); goLeft.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { //go to previous image if( currentImagePosition > 0 ){ //i'm assuming you dont want to go left anymore once at the leftmost image coverFlow.setSelection(currentImagePosition - 1, true); } } } ) ; Button goRight = (Button) findViewById(R.id.button2); goRight.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { //go to previous image if( currentImagePosition < coverFlow.getCount()-1 ){ //i'm assuming you dont want to go left anymore once at the leftmost image coverFlow.setSelection(currentImagePosition + 1, true); } } } ) ; } 

注意:关于更新位置的部分被假定为从阅读获取当前图像显示在图库中的位置,所以我希望这可以工作。 如果没有,至less我试过:D

祝你好运!!!