这是我的第一篇文章...我是一个尝试为Android制作应用程序的初学者。 我试图用一副扑克牌做一个简单的比赛游戏。我已经能够在线获得开源svg和png扑克牌。它们或者是单独的卡片图像(以png或svg格式)或者是一张图像(svg或png),每张卡片都与对比度背景很好地隔开。 在完成所有研究之后,我尝试使用这些svg或png文件,但遇到内存不足或UX性能非常低的问题。
我的目标是让gridview显示所有52张水平滑动的卡片。如果我点击一张卡片,然后匹配它的脸......那么我得到一个观点。
继承我的布局activty_play_board.xml 只有一个项目... gridview:
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="540dp"
android:horizontalSpacing="2dp"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="2dp" />
我使用googles dev网站上的这个公共课程。它允许我用svg或png卡填写gridview
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(200, 270));
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setPadding(4,4, 4, 4);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
private Integer[] mThumbIds = {
R.drawable.two_of_clubs,
R.drawable.two_of_diamonds,
R.drawable.two_of_hearts,
R.drawable.two_of_spades,
R.drawable.three_of_clubs,
R.drawable.three_of_diamonds,
R.drawable.three_of_hearts,
R.drawable.three_of_spades,
R.drawable.four_of_clubs,
R.drawable.four_of_diamonds,
R.drawable.four_of_hearts,
R.drawable.four_of_spades,
R.drawable.five_of_clubs,
R.drawable.five_of_diamonds,
R.drawable.five_of_hearts,
R.drawable.five_of_spades,
R.drawable.six_of_diamonds,
R.drawable.six_of_hearts,
R.drawable.six_of_spades,
R.drawable.six_of_clubs,
R.drawable.seven_of_diamonds,
R.drawable.seven_of_hearts,
R.drawable.seven_of_spades,
R.drawable.seven_of_clubs,
R.drawable.eight_of_diamonds,
R.drawable.eight_of_hearts,
R.drawable.eight_of_clubs,
R.drawable.eight_of_spades,
R.drawable.nine_of_diamonds,
R.drawable.nine_of_hearts,
R.drawable.nine_of_spades,
R.drawable.nine_of_clubs,
R.drawable.ten_of_clubs,
R.drawable.ten_of_diamonds,
R.drawable.ten_of_hearts,
R.drawable.ten_of_spades,
R.drawable.jack_of_clubs,
R.drawable.jack_of_diamonds,
R.drawable.jack_of_hearts,
R.drawable.jack_of_spades,
R.drawable.queen_of_clubs,
R.drawable.queen_of_diamonds,
R.drawable.queen_of_hearts,
R.drawable.queen_of_spades,
R.drawable.king_of_spades,
R.drawable.king_of_clubs,
R.drawable.king_of_diamonds,
R.drawable.king_of_hearts,
R.drawable.ace_of_spades,
R.drawable.ace_of_diamonds,
R.drawable.ace_of_hearts,
R.drawable.ace_of_clubs
};}
继承人我的onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid_board);
Button goBackOnClick = (Button) findViewById(R.id.playBoardButton);
GridView gridview = (GridView) findViewById(R.id.gridView);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(newAdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(GridBoard.this, "Spot: " + position, Toast.LENGTH_LONG).show();
}
});
我有几个问题。
如何利用SVG文件?我在调用我的gridview中的imageview时调用一个大的svg文件,然后在文件上引用一个特定的位置?
我不知道如何使用一个大的SVG文件,所以我尝试使用单独的svg图像。但是当我这样做时,我的设备非常迟缓且缓慢。有时,由于内存不足错误导致应用程序崩溃。尝试引用大型SVG文件中的特定卡时是否有特殊语法?或者我是否必须手动编辑大svg文件并获得较小的卡?
有没有比使用gridview更好的方法呢?
非常感谢任何其他一般指导。
谢谢!
见证我的卡片来源: 一个大调色板 https://upload.wikimedia.org/wikipedia/commons/8/81/English_pattern_playing_cards_deck.svg 个人卡和一个大调色板 http://byronknoll.blogspot.com/2011/03/vector-playing-cards.html