gpt4 book ai didi

android - 创建自定义图库 - 覆盖 onFling

转载 作者:可可西里 更新时间:2023-11-01 18:44:25 29 4
gpt4 key购买 nike

所以,我已经关注了这个特定的线程(How to stop scrolling in a Gallery Widget?),但我无法让它正常工作。

我创建了一个扩展 Gallery 的自定义 MyGallery 类。我已经在上面的链接中添加了代码...我应该添加 <com.example.mygallery 吗?到 XML 文件?如果是这样,我是否还要将导入添加到 java 文件中,还是因为 XML 文件而不需要这样做?我很困惑。

我只想让图库每次移动一次移动一张图像。

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/carlot_background"
>
<com.gallerytest.mygallery
android:id="@+id/thisgallery"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

我的画廊.java:

package com.gallerytest;

import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Gallery;

public class mygallery extends Gallery {

public mygallery(Context ctx, AttributeSet attrSet) {
super(ctx);
// TODO Auto-generated constructor stub
}

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){
return e2.getX() > e1.getX();
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
int kEvent;
if(isScrollingLeft(e1, e2)){ //Check if scrolling left
kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
}
else{ //Otherwise scrolling right
kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
}
onKeyDown(kEvent, null);
return true;
}

}

主要.java: 包 com.gallerytest;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class main extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mygallery gallery = (mygallery) findViewById(R.id.thisgallery);

gallery.setAdapter(new AddImgAdp(this));

gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {

Toast.makeText(main.this, "Position=" + position, Toast.LENGTH_SHORT).show();
}

});

}

public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;


private Integer[] Imgid = {
R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4, R.drawable.image5};

public AddImgAdp(Context c) {
cont = c;
TypedArray typArray = obtainStyledAttributes(R.styleable.Gallery1);
GalItemBg = typArray.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);
typArray.recycle();
}

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

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

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

public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = new ImageView(cont);

imgView.setImageResource(Imgid[position]);

imgView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imgView.setBackgroundResource(0x0106000d);
imgView.setLayoutParams(new mygallery.LayoutParams(300, 240));

return imgView;
}
}
}

我需要一些帮助。谢谢!!

~瑞克

最佳答案

只需将 attrSet 参数添加到自定义图库的构造函数中:

super(ctx, attrSet);

这对我有用。里奥万努奇

关于android - 创建自定义图库 - 覆盖 onFling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4582123/

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