Здесь я практикую несколько уроков создания сетки с автоматическим изменением размера изображения. Я принял это tutorial к своей деятельности. что я буду делать дальше, как сделать изображение кликабельным. так что, когда пользователи щелкают по каждому изображению, он переходит к некоторому классу/активности.Создание интерактивного изображения, чтобы открыть другое мероприятие
Вот несколько кода из программы я экспериментировал:
activity_main.xml бросить GridView в макет, режим простирания и ширина колонок:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="5dp"
android:horizontalSpacing="5dp"
android:stretchMode="columnWidth"
android:numColumns="2"
/>
</FrameLayout>
MainActivity.java пользовательского ImageView который поддерживает его соотношение сторон:
public class MainActivity extends ImageView {
public MainActivity(Context context) {
super(context);
}
public MainActivity(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MainActivity(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width
}
}
Это макет для элемента сетки:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.conversa.MainActivity
android:id="@+id/picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
android:layout_gravity="bottom"
android:textColor="@android:color/white"
android:background="#55000000"
/>
</FrameLayout>
Это адаптер для GridView:
public class MyAdapter extends BaseAdapter {
private List<Item> items = new ArrayList<Item>();
private LayoutInflater inflater;
public MyAdapter(Context context) {
inflater = LayoutInflater.from(context);
items.add(new Item("Conversation 1", R.drawable.pic1));
items.add(new Item("Conversation 2", R.drawable.pic2));
items.add(new Item("Conversation 3", R.drawable.pic3));
items.add(new Item("Conversation 4", R.drawable.pic4));
items.add(new Item("Conversation 5", R.drawable.pic5));
items.add(new Item("Conversation 6", R.drawable.pic6));
items.add(new Item("Conversation 7", R.drawable.pic7));
items.add(new Item("Conversation 8", R.drawable.pic8));
items.add(new Item("Conversation 9", R.drawable.pic9));
items.add(new Item("Conversation 10", R.drawable.pic10));
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return items.get(i).drawableId;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = view;
ImageView picture;
TextView name;
if(v == null) {
v = inflater.inflate(R.layout.gridimage, viewGroup, false);
v.setTag(R.id.picture, v.findViewById(R.id.picture));
v.setTag(R.id.text, v.findViewById(R.id.text));
}
picture = (ImageView)v.getTag(R.id.picture);
name = (TextView)v.getTag(R.id.text);
Item item = (Item)getItem(i);
picture.setImageResource(item.drawableId);
name.setText(item.name);
return v;
}
private class Item {
final String name;
final int drawableId;
Item(String name, int drawableId) {
this.name = name;
this.drawableId = drawableId;
}
}
}
И это, когда адаптер устанавливается в GridView:
public class Gridpiw extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new MyAdapter(this));
}
}
Что должен Я добавляю или могу изменить так, чтобы изображение можно было щелкнуть, чтобы показать новую активность?
спасибо за ответ, но как я могу заставить каждый элемент изображения иметь свою собственную активность. Я хочу, чтобы каждый элемент имел вид деятельности. например, изображение 3 переходит в ThirdActivity, изображение 4 переходит в FourthActivity и так далее. – Sororon
Зачем вам так много занятий? – rom4ek
Я пытаюсь сделать простое приложение для разговора, и у него есть 10 видов деятельности. когда вы нажимаете на каждый элемент, он переходит к активности, которая относится к элементу, который вы нажали. например, в пункте 1 речь идет о «введении» разговора, поэтому, когда вы нажимали на элемент, он вызывал действие с именем «Introduction.java». Пункт 2 посвящен разговору «просить о помощи», и когда вы щелкнули этот пункт, он переходит в «askhelp.java». И другие. как он может работать в коде ниже? – Sororon