71.s1- Create GradView and listen to GradView

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;
		}
		
	}

}

 

 

 

 

Guess you like

Origin blog.csdn.net/augfun/article/details/61066062