安卓开发小练手之手机卫士开发(2)——主界面
2015-04-29 21:09
375 查看
前面说完Splash界面,接下来就是主界面,可以使用ListView或者GridView进行加载,其实ListView就是一种特殊的GridView,因为GrideView可以指定一行中可以放置多少个,现在我们采用一行三列的方式,首先还是老规矩,新建Activity,注册,new布局文件
第一步,先从布局文件开始
布局文件我们做的很简单,只有一个标题栏,然后就是一个GridView,指定高度宽度,设置一行是几个格子,android:numColumns=”3”,其他的照常,代码如下:
由于我们在GridView中还要设置里面的item的内容,待会使用Adapter取数据的时候可以用到,所以我们还需要定义GridView中的item的样式,同样是新建一个XML文件,上面是一个ImageView,下面是一个TextView,待会可以进行加载的时候可以用到,代码如下
第二步,接下来是主界面的Activity的代码编辑,在这里只是一个将item在GridView进行展示而已,思路如下,首先我们可以找到布局文件中的LinearLayout的GridView,给GridView设置适配器Adapter,这里我们采用的是中等复杂的继承自BaseAdapter的Adapter,代码基本框架如下
这样我们就完成了主界面的设定,并且给每一个item设置点击事件,通过给GridView设置点击监听,通过setOnItemClickListener();
在界面有多个控件可以进行点击的时候,为了方便我们给他们增加点击事件,我们可以通过判断id的点击事件进行判断,进而知道是触发哪个事件,利用switch语句
总结:1、GridView增加点击事件的方法是setOnItemClick(),复写其中的click方法
2、GridView进行界面的加载,我们使用一个适配器Adapter,复写适配器里面的方法
3、复写适配器getView方法的时候,为了提高程序的流畅,我们使用判断convertView是否为空的方式进行判断,如果为空,那么就new一个view对象出来,如果不为空的话,也就是有待回收的view对象,我们就可以使用view复用的方法进行重新包装成我们要的view对象
4、注意,如果是要在条目中的某一个控件增加点击事件,我们在getView方法中就要进行寻找控件,写点击事件的逻辑
第一步,先从布局文件开始
布局文件我们做的很简单,只有一个标题栏,然后就是一个GridView,指定高度宽度,设置一行是几个格子,android:numColumns=”3”,其他的照常,代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bigwhite_4" android:orientation="vertical" tools:context=".ui.MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="@color/titilecolor" android:gravity="center_horizontal" android:orientation="vertical" > <TextView style="@style/text_title" android:gravity="center_horizontal" android:text="手机卫士" /> </LinearLayout> <GridView android:id="@+id/gv_main" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="30dp" <!--设置一行中的列数--> android:numColumns="3" > </GridView> </LinearLayout>
由于我们在GridView中还要设置里面的item的内容,待会使用Adapter取数据的时候可以用到,所以我们还需要定义GridView中的item的样式,同样是新建一个XML文件,上面是一个ImageView,下面是一个TextView,待会可以进行加载的时候可以用到,代码如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="240dp" android:layout_height="240dp" android:layout_marginTop="10dp" android:gravity="center_vertical" android:orientation="vertical" android:paddingBottom="10dp" android:paddingTop="10dp" > <ImageView android:id="@+id/iv_item_icon" android:layout_width="100dp" android:layout_height="90dp" android:paddingLeft="10dp" android:scaleType="fitXY" /> <TextView android:id="@+id/tv_item_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:layout_marginLeft="28dp" android:textColor="#ffCCBD00" android:textSize="16sp" /> </LinearLayout>
第二步,接下来是主界面的Activity的代码编辑,在这里只是一个将item在GridView进行展示而已,思路如下,首先我们可以找到布局文件中的LinearLayout的GridView,给GridView设置适配器Adapter,这里我们采用的是中等复杂的继承自BaseAdapter的Adapter,代码基本框架如下
package developer.yupeibiao.mobilesafe.ui; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import developer.yupeibiao.mobilesafe.R; import developer.yupeibiao.mobilesafe.adapter.MainUiAdapter; public class MainActivity extends Activity implements OnItemClickListener { private GridView gv_main; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); gv_main=(GridView) findViewById(R.id.gv_main); gv_main.setAdapter(new MainUiAdapter(this)); gv_main.setOnItemClickListener(this); } //设置点击启动的界面 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { switch (position) { case 0: Intent intent=new Intent(this,LoadprotectActivity.class); startActivity(intent); break; case 1: Intent intent_blackNumber=new Intent(this,SafeNumberActivity.class); startActivity(intent_blackNumber); break; case 2: Intent intent_appmanager=new Intent(this,AppManagerActivity.class); startActivity(intent_appmanager); break; case 3: Intent intent_taskmanager=new Intent(this,TaskManagerActivity.class); startActivity(intent_taskmanager); break; case 4: Intent intent_flowmanager=new Intent(this,FlowManagerActivity.class); startActivity(intent_flowmanager); break; case 5: Intent intent_virus=new Intent(this,VirusProtectingActivity.class); startActivity(intent_virus); break; case 6: Intent intent_advanced=new Intent(this,NumberAddressQueryActivity.class); startActivity(intent_advanced); break; case 7: Intent intent_soft=new Intent(this,SoftAllActivity.class); startActivity(intent_soft); break; case 8: Intent intent_about_soft=new Intent(this,AboutSoftActivity.class); startActivity(intent_about_soft); break; } } } //适配器的代码 package developer.yupeibiao.mobilesafe.adapter; import java.util.zip.Inflater; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import developer.yupeibiao.mobilesafe.R; public class MainUiAdapter extends BaseAdapter { private Context context; private LayoutInflater inflater; public MainUiAdapter(Context context) { super(); this.context = context; inflater=LayoutInflater.from(context); } public String [] names={"手机防盗","通讯卫士","软件管理","任务管理", "上网管理","手机杀毒","归属查询","软件推荐","关于软件"}; //我们的图标资源文件是放在drawable文件夹下面的,会自动生成id public static int[] icons={R.drawable.protect_1,R.drawable.address_2,R.drawable.software_3,R.drawable.soft_4,R.drawable.globe_8, R.drawable.antivirus_6,R.drawable.home_7,R.drawable.store_8,R.drawable.about_9}; public int getCount() { // TODO Auto-generated method stub return names.length; } public Object getItem(int position) { // TODO Auto-generated method stub return position; } public long getItemId(int position) { // TODO Auto-generated method stub return position; } public View getView(int position, View convertView, ViewGroup parent) { View view=inflater.inflate(R.layout.main_screen_item,null); TextView tv_icon=(TextView) view.findViewById(R.id.tv_item_icon); ImageView iv_icon=(ImageView) view.findViewById(R.id.iv_item_icon); tv_icon.setText(names[position]); iv_icon.setImageResource(icons[position]); return view; /*第二种方式,我们可以对内存进行优化,上面的代码很容易产生垃圾,会让虚拟机的垃圾回收机制很累 View view; if(convertView!=null&&convertView instanceof LinearLayout){ //如果回收了一个view,我们可以进行复用 view=convertView; }else{ view=View.inflate(this,R.layout.main_screen_item,null); }*/ } }
这样我们就完成了主界面的设定,并且给每一个item设置点击事件,通过给GridView设置点击监听,通过setOnItemClickListener();
在界面有多个控件可以进行点击的时候,为了方便我们给他们增加点击事件,我们可以通过判断id的点击事件进行判断,进而知道是触发哪个事件,利用switch语句
总结:1、GridView增加点击事件的方法是setOnItemClick(),复写其中的click方法
2、GridView进行界面的加载,我们使用一个适配器Adapter,复写适配器里面的方法
3、复写适配器getView方法的时候,为了提高程序的流畅,我们使用判断convertView是否为空的方式进行判断,如果为空,那么就new一个view对象出来,如果不为空的话,也就是有待回收的view对象,我们就可以使用view复用的方法进行重新包装成我们要的view对象
4、注意,如果是要在条目中的某一个控件增加点击事件,我们在getView方法中就要进行寻找控件,写点击事件的逻辑
相关文章推荐
- 安卓开发小练手之手机卫士开发(1)——Splash界面
- 安卓开发小练手之手机卫士开发(3)——手机防盗界面的开启
- 安卓开发小练手之手机卫士开发(4)——手机防盗设置界面
- 安卓手机卫士开发学习第一天--Splash界面
- 手机卫士 第二天主界面的开发
- 安卓开发中将文字复制到手机粘贴板
- APP源码 教程 网页转APP 安卓Andriod应用开发 手机APP 移动网站
- 手机 蓝牙 控制 继电器 无线门锁 物联网 安卓源码 安卓开发 Android WIFI控制 详细注释测试稳定无bug
- [android] 手机卫士欢迎细节和主界面
- Android - 手机卫士开发(MobileSafe)(二)
- Android开发笔记----安卓手机端抓包
- 手机版WEB开发经验分享,手机版网站开发注意事项,网站自适应,手机版网站自适应,移动安卓APP自适应
- 手机卫士 第四天高级工具开发
- 安卓_手机卫士_第二天(GridView,自定义组合控件实现设置页项,自定义对话框)
- 安卓开发环境配置相关问题(坚果手机)
- 安卓开发 获取手机状态栏的高度
- 人脸识别开发安卓手机APP 注册人脸 识别人脸
- Android项目实战--手机卫士开发系列教程
- 安卓开发获取当前手机应用信息的方法