gpt4 book ai didi

Android Coverflow OnClickListener

转载 作者:太空狗 更新时间:2023-10-29 16:23:17 26 4
gpt4 key购买 nike

我用 coverflow 创建了一个应用程序。我到处都看过,但似乎无法弄清楚如何在单击封面流中的每个单独图像时使用 onclicklistener 来进行简单的 Activity 。下面是我的代码,我希望有人能提供帮助,因为该应用程序可以很好地解决这 1 个问题!!

导入java.io.FileInputStream;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Typeface;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CoverFlow coverFlow;
coverFlow = new CoverFlow(this);

coverFlow.setAdapter(new ImageAdapter(this));

ImageAdapter coverImageAdapter = new ImageAdapter(this);

//coverImageAdapter.createReflectedImages();

coverFlow.setAdapter(coverImageAdapter);

coverFlow.setSpacing(-15);
coverFlow.setSelection(4, true);
coverFlow.setAnimationDuration(1000);


setContentView(coverFlow);


//Use this if you want to use XML layout file
//setContentView(R.layout.main);
//coverFlow = (CoverFlow) findViewById(R.id.coverflow);
setContentView(R.layout.main);

Button main1 = (Button) findViewById(R.id.button1);
main1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// fire intent
finish(); // finish current activity
Intent myIntent = new Intent(view.getContext(),
MainActivity.class);
startActivityForResult(myIntent, 0);

}


});

Button main2 = (Button) findViewById(R.id.button2);
main2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// fire intent
finish(); // finish current activity
Intent myIntent = new Intent(view.getContext(),
MainbActivity.class);
startActivityForResult(myIntent, 0);

}


});

coverFlow = (CoverFlow) findViewById(R.id.coverflow);
coverFlow.setAdapter(coverImageAdapter);


}

public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;

private FileInputStream fis;

private Integer[] mImageIds = {
R.drawable.tabletsplash,
R.drawable.tabletsplash2,
R.drawable.tabletsplash3,
R.drawable.tabletsplash4,
R.drawable.tabletsplash5,
R.drawable.tabletsplash,
R.drawable.tabletsplash2,
R.drawable.tabletsplash3,
R.drawable.tabletsplash4,
R.drawable.tabletsplash5,
};

private ImageView[] mImages;

public ImageAdapter(Context c) {
mContext = c;
mImages = new ImageView[mImageIds.length];
}
public boolean createReflectedImages() {
//The gap we want between the reflection and the original image
final int reflectionGap = 4;


int index = 0;
for (int imageId : mImageIds) {
Bitmap originalImage = BitmapFactory.decodeResource(getResources(),
imageId);
int width = originalImage.getWidth();
int height = originalImage.getHeight();


//This will not scale but will flip on the Y axis
Matrix matrix = new Matrix();
matrix.preScale(1, -1);

//Create a Bitmap with the flip matrix applied to it.
//We only want the bottom half of the image
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);


//Create a new bitmap with same width but taller to fit reflection
Bitmap bitmapWithReflection = Bitmap.createBitmap(width
, (height + height/2), Config.ARGB_8888);

//Create a new Canvas with the bitmap that's big enough for
//the image plus gap plus reflection
Canvas canvas = new Canvas(bitmapWithReflection);
//Draw in the original image
canvas.drawBitmap(originalImage, 0, 0, null);
//Draw in the gap
Paint deafaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, deafaultPaint);
//Draw in the reflection
canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);

//Create a shader that is a linear gradient that covers the reflection
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,
TileMode.CLAMP);
//Set the paint to use this shader (linear gradient)
paint.setShader(shader);
//Set the Transfer mode to be porter duff and destination in
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
//Draw a rectangle using the paint with our linear gradient
canvas.drawRect(0, height, width,
bitmapWithReflection.getHeight() + reflectionGap, paint);

ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(bitmapWithReflection);
imageView.setLayoutParams(new CoverFlow.LayoutParams(120, 180));
imageView.setScaleType(ScaleType.MATRIX);
mImages[index++] = imageView;

}
return true;
}

public int getCount() {
return mImageIds.length;
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {

//Use this code if you want to load from resources
ImageView i = new ImageView(mContext);
i.setImageResource(mImageIds[position]);
i.setLayoutParams(new CoverFlow.LayoutParams(300, 900));
i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

//Make sure we set anti-aliasing otherwise we get jaggies
BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
drawable.setAntiAlias(true);
return i;

//return mImages[position];
}
/** Returns the size (0.0f to 1.0f) of the views
* depending on the 'offset' to the center. */
public float getScale(boolean focused, int offset) {
/* Formula: 1 / (2 ^ offset) */
return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
}



}

}

最佳答案

您的 CoverFlow 类是否基于 Gallery 小部件?如果是这样,您只需设置一个 OnItemClickListener - 当您按下 CoverFlow/Gallery 中的项目时将触发它。

这是一个简单的例子:

coverFlow.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
// Do something }
}
);

根据职位开始 Activity :

if (arg2 == 0) {
startActivityForResult(new Intent(getApplicationContext(), ActivityA.class), 0);
} else if (arg2 == 1) {
startActivityForResult(new Intent(getApplicationContext(), ActivityB.class), 0);
}

关于Android Coverflow OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9120841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com