[英]How to divide the screen to small squares in android?
我想使所有屏幕都划分為小方塊,當我觸摸其中一個時,它會改變我觸摸的方塊的顏色。 我沒有找到執行此操作的任何代碼。 我該如何在android中做到這一點?
使用GridView實現這種事情
網格視圖
GridView是一個ViewGroup,它在二維可滾動網格中顯示項目。 使用ListAdapter將網格項自動插入到布局中。
將“單擊偵聽器”設置為特定項目,以更改相應的框顏色。
供參考: -https : //developer.android.com/guide/topics/ui/layout/gridview
您應該使用RecyclerView來回收其子視圖以提高性能,並且可以將其layoutmanager設置為GridLayoutManger。 對於顏色更改,您可以在初始化數據列表並單擊項目時更新顏色時將顏色或狀態存儲到諸如SparseArray之類的顏色中,然后在onBindViewHolder()方法中從查看器的getAdapterPosition()中檢索正確的顏色。從您的Recyclerview.Adapter
以下是參考資料:
https://developer.android.com/reference/android/support/v7/widget/RecyclerView https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter https:// developer。 android.com/reference/android/support/v7/widget/GridLayoutManager
XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_touchscreen"
tools:context=".tochscreen_page_2">
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="none"
android:gravity="center"
/>
</android.support.constraint.ConstraintLayout>
Java的
public class tochscreen_page_2 extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tochscreen_page_2);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(tochscreen_page_2.this, "" + position,
Toast.LENGTH_SHORT).show();
}
});
}
ImageAdapter
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
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 ViewGroup.LayoutParams(100, 100));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
R.drawable.gradient_charger, R.drawable.gradient_flashlight,
R.drawable.gradient_vibrtion, R.drawable.gradient_charger,
};
}
結果就是這樣: http : //prntscr.com/kvqe34
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.