Android 는 앱 의 매달 출석 기능 을 간단하게 실현 합 니 다.
먼저 이전 효과 그림:
그 중에서 이런 서명 효과 도 는 인터넷 에서 찾 은 것 이다.그리고 중요 한 컨트롤 은 바로 GridvVew 이다.코드 는 매우 간단 하고 3 개의 코드 파일 만 있다.
MainActivity.class 파일
package zhanghuan.cn.checkdesign;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private List<CheckBean> checkBeanList;
private MyAdapter mAdapter;
private GridView mGridview;
private TextView monthTxt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDate();
}
private void initDate() {
Calendar calendar = Calendar.getInstance(Locale.CHINA);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.getActualMaximum(Calendar.DATE); //
checkBeanList = new ArrayList<CheckBean>();
for (int i = 0; i < day + 1; i++) {
CheckBean checkBean = new CheckBean();
if ((int) (Math.random() * 20 % 4) == 3) {
checkBean.day = i;
checkBean.check_status = CheckBean.CHECKED;
} else if ((int) (Math.random() * 20 % 4) == 2) {
checkBean.day = i;
checkBean.check_status = CheckBean.CHECK_NO;
} else {
checkBean.day = i;
checkBean.check_status = CheckBean.CHECK_WAIT;
}
checkBeanList.add(checkBean);
}
monthTxt = (TextView)findViewById(R.id.item_month);
if (month < 1 || month > 12) {
month = 1;
}
monthTxt.setText(" :" + month);
mAdapter = new MyAdapter(MainActivity.this);
mAdapter.setListDate(checkBeanList);
mGridview = (GridView) findViewById(R.id.main_gridview);
mGridview.setAdapter(mAdapter);
}
}
어댑터 파일:MyAdapter.class
package zhanghuan.cn.checkdesign;
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 android.widget.Toast;
import java.util.List;
/**
* Created by zhanghuan on 2016/3/8.
*/
public class MyAdapter extends BaseAdapter {
private Context mContext;
private List<CheckBean> checkBeanList;
public MyAdapter(Context context) {
mContext = context;
}
public void setListDate(List<CheckBean> checklist) {
checkBeanList = checklist;
}
@Override
public int getCount() {
return checkBeanList.size();
}
@Override
public Object getItem(int position) {
return checkBeanList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final MyHoder hoder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.check_item, null);
hoder = new MyHoder();
hoder.day = (TextView) convertView.findViewById(R.id.item_day);
hoder.status = (ImageView) convertView.findViewById(R.id.item_image);
convertView.setTag(hoder);
} else {
hoder = (MyHoder) convertView.getTag();
}
hoder.day.setText("day" + checkBeanList.get(position).day);
if (checkBeanList.get(position).check_status == CheckBean.CHECK_NO) {
hoder.status.setImageResource(R.mipmap.check_no);
hoder.status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, " , !", Toast.LENGTH_SHORT).show();
hoder.status.setImageResource(R.mipmap.checked);
hoder.status.setClickable(false);
checkBeanList.get(position).check_status = CheckBean.CHECKED;
/* */
}
});
} else if (checkBeanList.get(position).check_status == CheckBean.CHECK_WAIT) {
hoder.status.setImageResource(R.mipmap.check_wait);
} else if (checkBeanList.get(position).check_status == CheckBean.CHECKED) {
hoder.status.setImageResource(R.mipmap.checked);
}
return convertView;
}
private static class MyHoder {
TextView day;
ImageView status;
}
}
CheckBean.class 파일:
package zhanghuan.cn.checkdesign;
import java.io.Serializable;
/**
* Created by zhanghuan on 2016/3/8.
*/
public class CheckBean implements Serializable {
//
public static final int CHECKED = 3; //
public static final int CHECK_NO = 2; //
public static final int CHECK_WAIT = 1; // ( )
public int day;
public int check_status;
}
소스 코드 다운로드:클릭 하여 링크 열기이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.