Gridview is mainly used for simple layout of some Android interfaces. It handles the click of each module of gridview by adding monitoring events.
GrideView is similar to ListView, both need setAdapter to create HomeAdapter at the same time to inherit BaseAdapter to fill one by one
Layout file to create a 3-column layout
<GridView
android:id="@+id/gv_home"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:verticalSpacing="10dp"
android:numColumns="3"
></GridView>
Add listening events to GradView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
gv_home = (GridView) findViewById(R.id.gv_home);
gv_home.setAdapter(new HomeAdapter());
//监听gridview点击事件
gv_home.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 8:
//设置中心
startActivity(new Intent(HomeActivity.this, SettingActivity.class));
break;
default:
break;
}
}
});
}
Use of GrideView
First create the layout file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
style="@style/TitleStyle"
android:text="手机管家"
/>
<com.ldw.safe.view.FocusedTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:text="简书是一个优质的创作社区,在这里,你可以任性地创作,一篇短文、一张照片、一首诗、一幅画……我们相信,每个人都是生活中的艺术家,有着无穷的创造力"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_marginTop="3dp"
android:layout_marginBottom="3dp"
android:textSize="18sp"
/>
<GridView
android:id="@+id/gv_home"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:verticalSpacing="10dp"
android:numColumns="3"
></GridView>
</LinearLayout>
Single entry of GrideView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/iv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/app"
/>
<TextView
android:id="@+id/tv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机卫士"
android:textColor="@color/black"
android:layout_marginTop="5dp"
android:textSize="18sp"
/>
</LinearLayout>
Logic code to fill the individual items in the GrideView one by one
package com.ldw.safe.Activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.ldw.safe.R;
import com.ldw.safe.utils.MD5Utils;
public class HomeActivity extends Activity{
private GridView gv_home;
private String[] mItems = new String[] {"手机防盗", "通讯卫士", "软件管理", "进程管理", "流量统计", "手机杀毒", "缓存清理", "高级工具", "设置中心"};
private int[] mPics = new int[] {R.drawable.safe, R.drawable.callmsgsafe, R.drawable.app,
R.drawable.taskmanager, R.drawable.netmanager, R.drawable.sysoptimize,
R.drawable.trojan, R.drawable.atools, R.drawable.settings};
private SharedPreferences mPref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mPref = getSharedPreferences("config", MODE_PRIVATE);
gv_home = (GridView) findViewById(R.id.gv_home);
gv_home.setAdapter(new HomeAdapter());
//监听gridview点击事件
gv_home.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch(position){
case 0:
//手机防盗
showPasswordDialog();
break;
case 1:
//通讯卫士
startActivity(new Intent(HomeActivity.this, CallSafeActivity.class));
break;
case 2:
//软件管理
startActivity(new Intent(HomeActivity.this, AppManagerActivity.class));
break;
case 3:
//进程管理
startActivity(new Intent(HomeActivity.this, TaskManagerActivity.class));
break;
case 5:
//手机杀毒
startActivity(new Intent(HomeActivity.this, AntivirusActivity.class));
break;
case 7:
//高级工具
startActivity(new Intent(HomeActivity.this, AdvancedToolsActivity.class));
break;
case 8:
//设置中心
startActivity(new Intent(HomeActivity.this, SettingActivity.class));
break;
default:
break;
}
}
});
}
/*
* 显示密码的弹窗
*/
protected void showPasswordDialog(){
//判断是否设置密码
String savePassword = mPref.getString("password", null);
if(!TextUtils.isEmpty(savePassword)){
//输入密码的弹窗
showPasswordInputDialog();
}else{
//如果没有设置过,弹出密码设置的弹窗
showPasswordSetDialog();
}
}
/*
* 输入密码框,设置过密码只需要登陆
*/
protected void showPasswordInputDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(this, R.layout.dialog_input_password, null);
//dialog.setView(view);//自定义的view设置到dialog
dialog.setView(view, 0, 0, 0, 0);//设置边距为0,兼容android2.3
final EditText etPassword = (EditText) view.findViewById(R.id.et_password);
//获取2个按键
Button btnOk = (Button)view.findViewById(R.id.btn_ok);
Button btnCancle = (Button)view.findViewById(R.id.btn_cancle);
//监听ok按键
btnOk.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String password = etPassword.getText().toString();
if(!TextUtils.isEmpty(password)){
String savePassword = mPref.getString("password", null);
if(MD5Utils.encode(password).equals(savePassword)){
Toast.makeText(HomeActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
//对话框消失
dialog.dismiss();
//跳转到手机防盗界面
startActivity(new Intent(HomeActivity.this, LostAndFind.class));
}else{
Toast.makeText(HomeActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(HomeActivity.this, "输入框不能是空的", Toast.LENGTH_SHORT).show();
}
}
});
//监听取消按键
btnCancle.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
/*
* 设置密码的弹窗,以前没有设置密码
*/
protected void showPasswordSetDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(this, R.layout.dialog_set_password, null);
//dialog.setView(view);//自定义的view设置到dialog
dialog.setView(view, 0, 0, 0, 0);//设置边距为0,兼容android2.3
final EditText etPassword = (EditText) view.findViewById(R.id.et_password);
final EditText etPasswordConfirm = (EditText) view.findViewById(R.id.et_password_confirm);
//获取2个按键
Button btnOk = (Button)view.findViewById(R.id.btn_ok);
Button btnCancle = (Button)view.findViewById(R.id.btn_cancle);
//监听ok按键
btnOk.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String password = etPassword.getText().toString();
String passwordConfirm = etPasswordConfirm.getText().toString();
//TextUtils.isEmpty(password)判断password是不是空,可以避免都是空格
if(!TextUtils.isEmpty(password) && !passwordConfirm.isEmpty()){
if(password.equals(passwordConfirm)){
Toast.makeText(HomeActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
//保存密码到mPref
mPref.edit().putString("password", MD5Utils.encode(password)).commit();
//对话框消失
dialog.dismiss();
//跳转到手机防盗界面
startActivity(new Intent(HomeActivity.this, LostAndFind.class));
}else{
Toast.makeText(HomeActivity.this, "两次密码不一致", Toast.LENGTH_SHORT).show();
}
}else{
Toast.makeText(HomeActivity.this, "输入框不能是空的", Toast.LENGTH_SHORT).show();
}
}
});
//监听取消按键
btnCancle.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
class HomeAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return mItems.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mItems[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(HomeActivity.this, R.layout.home_list_item, null);
ImageView iv_item = (ImageView) view.findViewById(R.id.iv_item);
TextView tv_item = (TextView) view.findViewById(R.id.tv_item);
iv_item.setImageResource(mPics[position]);
tv_item.setText(mItems[position]);
return view;
}
}
}