需要一个例子试图使用svg / png

时间:2017-12-31 03:17:26

标签: java android xml svg gridview

这是我的第一篇文章...我是一个尝试为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();
        }
});

我有几个问题。

  1. 如何利用SVG文件?我在调用我的gridview中的imageview时调用一个大的svg文件,然后在文件上引用一个特定的位置?

  2. 我不知道如何使用一个大的SVG文件,所以我尝试使用单独的svg图像。但是当我这样做时,我的设备非常迟缓且缓慢。有时,由于内存不足错误导致应用程序崩溃。尝试引用大型SVG文件中的特定卡时是否有特殊语法?或者我是否必须手动编辑大svg文件并获得较小的卡?

  3. 有没有比使用gridview更好的方法呢?

  4. 非常感谢任何其他一般指导。

  5. 谢谢!

    见证我的卡片来源: 一个大调色板 https://upload.wikimedia.org/wikipedia/commons/8/81/English_pattern_playing_cards_deck.svg 个人卡和一个大调色板 http://byronknoll.blogspot.com/2011/03/vector-playing-cards.html

0 个答案:

没有答案