这篇文章是看慕课网视频的笔记,包括图片素材均来自于慕课网,但实际代码是自己手敲.附上视频路径,若有侵权,请留言.
附上图片素材:
附上项目效果图:
当你点了日历应用的时候 , 会跳转到日历:
详细参考代码如下,
第一步:
在activity_main.xml文件拖一个GridView控件,去掉父容器的内边距.
<?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:numColumns="4" 表示GridView每一行显示4个Item(图标)
android:horizontalSpacing="20dp" 表示每一行Item之间的间距
android:verticalSpacing="20dp" 表示每一列Item之间的间距
-->
<GridView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="4"
android:horizontalSpacing="20dp"
android:verticalSpacing="20dp"
android:id="@+id/grid"></GridView>
</LinearLayout>
第二步:
新建一个布局文件,取名为Item.xml, 作为GridView每一项Item的参照样式
<?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:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/img"
android:src="@mipmap/camera"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txt"
android:textColor="#ffff"
android:layout_marginTop="5dp"
android:text="文字"/>
</LinearLayout>
Item.xml效果截图如下:
第三步:
新建一个Activity.取名为CalendarActivity,作为日历应用的显示界面.并在activity_calendar.xml中拖一个CalendarView控件.去掉父容器内边距,把CalendarView的宽设为”match_parent “,高设为固定值,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_calendar"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="myself.myapplication.CalendarActivity">
<CalendarView
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="12dp"
android:id="@+id/calendarView" />
</RelativeLayout>
第四步:
编写MainActivity.java,参考代码如下:
package myself.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
private GridView gridView;
private List<Map<String,Object>>dataList;
private SimpleAdapter simpleAdapter;
private int[] icons = {R.mipmap.address_book, R.mipmap.calendar,
R.mipmap.camera, R.mipmap.clock, R.mipmap.games_control,
R.mipmap.messenger, R.mipmap.ringtone, R.mipmap.settings,
R.mipmap.speech_balloon, R.mipmap.weather,
R.mipmap.world, R.mipmap.youtube};
private String[] iconName = {"联系人", "日历", "照相机", "时钟", "游戏", "短信", "铃声", "设置",
"语音", "天气", "浏览器", "Youtube"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
gridView = (GridView) findViewById(R.id.grid);
dataList = new ArrayList<>();
simpleAdapter = new SimpleAdapter(MainActivity.this, getDate(), R.layout.item, new String[]{"img", "text"}, new int[]{R.id.img, R.id.txt});
gridView.setAdapter(simpleAdapter);
gridView.setOnItemClickListener(this);
}
private List<Map<String,Object>> getDate() {
/**
*外层for循环其实没有必要,只是为了更贴近实际情况
* 复制了三次数据源, 如果你不是点击第一轮图标应用,项目会报错
* 往下看,
*因为onItemClick()这个方法传递的position参数跟数组的下标是对应的
* 而我的数组长度为12, 也就是桌面只有12个应用你可以正常使用,但实际现在
* 我的桌面是有36个应用图标
*/
for (int k = 0; k < 3; k++) {
for (int i = 0; i < icons.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("img", icons[i]);
map.put("text", iconName[i]);
dataList.add(map);
}
}
return dataList;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//这一行代码验证了,position和数组的下标是吻合的
Toast.makeText(MainActivity.this,"我是"+iconName[position],Toast.LENGTH_LONG ).show();
switch (position){
case 0:
break;
case 1:
//匹配position,当点击第二个图标(日历的时候,跳转到CalendarActivity)
Intent intent = new Intent(MainActivity.this, CalendarActivity.class);
startActivity(intent);
break;
}
}
}
实现顺序不一定非得按照这个步骤来,保持大脑清醒,知道自己这一步要做什么,下一步要做什么,还缺什么.是实现任何项目效果的前提.编程不是照搬照抄,虽然我们一直说:站在巨人的肩上写代码.但是我们得有自己的思考问题方式.