71.s1- Créer GradView et écouter GradView

Gridview est principalement utilisé pour la mise en page simple de certaines interfaces Android.Il gère les clics de chaque module de gridview en ajoutant des événements de surveillance.

GrideView est similaire à ListView, les deux ont besoin de setAdapter pour créer HomeAdapter en même temps pour hériter de BaseAdapter à remplir un par un

Fichier de mise en page pour créer une mise en page à 3 colonnes

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

Ajouter des événements d'écoute à 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;
				}
			}
        	
        });
        
	}

Utilisation de GrideView

Créez d'abord le fichier de mise en page

<?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>

Entrée unique de 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>

Code logique pour remplir les éléments individuels dans le GrideView un par un

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

}

 

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/augfun/article/details/61066062
conseillé
Classement