一个自定义控件的Demo
里面包括Button、Checkbock、listview、popupwindow的自定义
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button; public class AndroidWidgetActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
public void tolistmain(View view){
Intent intent = new Intent(this, ListMainActivity.class);
startActivity(intent);
}
public void topopwindowmain(View view){
Intent intent = new Intent(this, PopwindowMainActivity.class);
startActivity(intent);
}
}
import java.util.List;
import cn.ittest.domain.item;
import cn.ittest.widget.R;
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; public class ListAdapter extends BaseAdapter { List<item> items;
private int resource;
private LayoutInflater inflater;
public ListAdapter(Context context,List<item> items,int resource) {
this.resource = resource;
this.items = items;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} @Override
public int getCount() {
return items.size();
} @Override
public Object getItem(int position) {
return items.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = null;
TextView titleView = null;
TextView expView = null;
if(convertView==null){
convertView = inflater.inflate(resource, null);//生成条目界面对象
imgView = (ImageView) convertView.findViewById(R.id.img);
titleView = (TextView) convertView.findViewById(R.id.tvtitle);
expView = (TextView) convertView.findViewById(R.id.tvexp); ViewCache cache = new ViewCache();
cache.imgView = imgView;
cache.titleView = titleView;
cache.expView = expView;
convertView.setTag(cache);
}else{
ViewCache cache = (ViewCache) convertView.getTag();
imgView = cache.imgView;
titleView = cache.titleView;
expView = cache.expView;
}
item listItem = items.get(position);
imgView.setImageResource(R.drawable.listtitle);
titleView.setText(listItem.getTitle());
expView.setText(listItem.getExp()); return convertView;
} private final class ViewCache{
public ImageView imgView;
public TextView titleView;
public TextView expView;
}
}
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast; public class PopwindowMainActivity extends Activity{ private int screenx = 0;
private int screeny = 0;
private int x=0,y=0;
private EditText edtx;
private EditText edty;
private TextView showxy;
private Button sure;
private Button cancle;
private PopupWindow popupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pop);
edtx = (EditText)this.findViewById(R.id.edtx);
edty = (EditText)this.findViewById(R.id.edty);
showxy = (TextView)this.findViewById(R.id.showxy);
sure = (Button)this.findViewById(R.id.sure);
cancle = (Button)this.findViewById(R.id.cancle);
showscreen();
innit();
}
public void showscreen(){
screenx = getWindowManager().getDefaultDisplay().getWidth();//获得屏幕宽度
screeny = getWindowManager().getDefaultDisplay().getHeight();//获得屏幕高度
showxy.setText("X:"+screenx+" "+"Y:"+screeny);
}
public void innit(){
View popitem = getLayoutInflater().inflate(R.layout.popwindowitem,null);
popupWindow = new PopupWindow(popitem,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);//初始化窗口
popupWindow.setFocusable(true);//
sure.setOnClickListener(new onpopsureclicklistener());
cancle.setOnClickListener(new onpopcancleclicklistener());
final EditText edtshow = (EditText)popitem.findViewById(R.id.edtshow);
Button itemsure = (Button)popitem.findViewById(R.id.itemsure);
Button itemcancle = (Button)popitem.findViewById(R.id.itemcancle);
itemsure.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String showString = edtshow.getText().toString();
if (showString != null) {
Toast.makeText(getApplicationContext(), showString, Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}else {
Toast.makeText(getApplicationContext(), "输入为空,请重新输入!", Toast.LENGTH_SHORT).show();
}
}
});
itemcancle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
});
}
public final class onpopsureclicklistener implements View.OnClickListener{ @Override
public void onClick(View v) {
try {
x = Integer.parseInt(edtx.getText().toString());
y = Integer.parseInt(edty.getText().toString());
popupWindow.showAtLocation(findViewById(R.id.layout), Gravity.LEFT|Gravity.TOP, x, y);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "输入的数据无效,请重新输入!", 1).show();
}
}
}
public final class onpopcancleclicklistener implements View.OnClickListener{ @Override
public void onClick(View v) {
if (popupWindow != null) {
popupWindow.dismiss();
}
}
}
}
public class item {
private String title;
private String exp;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getExp() {
return exp;
}
public void setExp(String exp) {
this.exp = exp;
}
public item(String title, String exp) {
super();
this.title = title;
this.exp = exp;
}
public item() {
}
@Override
public String toString() {
return "item [title=" + title + ", exp=" + exp + "]";
}
}
import java.util.ArrayList;
import java.util.List;
import cn.ittest.adapter.ListAdapter;
import cn.ittest.domain.item;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast; public class ListMainActivity extends Activity{ private ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.list);
list = (ListView)this.findViewById(R.id.list);
list.setOnItemClickListener(new onItemclicklistener());
show();
}
public final class onItemclicklistener implements OnItemClickListener{ @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView listView = (ListView)parent;
item liItem = (item) listView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), liItem.toString(), 1).show();
}
}
public void show(){
List<item> items = new ArrayList<item>();
for (int i = 1; i <= 15; i++) {
item lItem = new item("第"+i+"个标题", "详细介绍神马!!!!!!!!!!!!!!!");
items.add(lItem);
}
ListAdapter adapter = new ListAdapter(this, items, R.layout.listitem);
list.setAdapter(adapter);
}
}
地址:http://download.csdn.net/detail/u011566000/5865305
一个自定义控件的Demo的更多相关文章
- ASP.NET自定义控件入门Demo
最近看了MSDN关于自定义控件的介绍,根据官方的文档,自己学着做了一个简单的Demo给需要的朋友参考. ASP.NET 源生的TextBox是不带Label标签的,这里我要实现的是创建一个带Label ...
- 我的第一个 react redux demo
最近学习react redux,先前看过了几本书和一些博客之类的,感觉还不错,比如<深入浅出react和redux>,<React全栈++Redux+Flux+webpack+Bab ...
- 1.类的加载机制_继承类的加载(一个小的Demo)说明
今天我们先来一个小的Demo来了解类的加载顺序. public class ClassLoaderTest { public static void main(String[] args) { Sys ...
- 第一个ajax小demo
第一个ajax小demo 文章来源:http://blog.csdn.net/magi1201/article/details/44569657
- [WPF 自定义控件]开始一个自定义控件库项目
1. 目标 我实现了一个自定义控件库,并且打算用这个控件库作例子写一些博客.这个控件库主要目标是用于教学,希望通过这些博客初学者可以学会为自己或公司创建自定义控件,并且对WPF有更深入的了解. 控件库 ...
- 无废话WCF入门教程六[一个简单的Demo]
一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...
- 一起来花5分钟写一个PHP入门Demo
最近公司招了几个应届毕业生,他们对前端的了解还挺多,但是对后端的技术一无所知,我觉得,作为一个前端攻城狮,如果你有远大的抱负,就应该雨露均沾... 今天我就跟大家讲一讲PHP最基本的入门,至少别人问起 ...
- 使用angular.js开发的一个简易todo demo
前沿 在CVTE实习考察的一周里,接触到了angular,并在最后的一天任务里要求使用angular做一个功能主要包括创建.编辑.恢复.删除以及留言的todo demo,并支持响应式布局.因为之前没怎 ...
- 他的第一个NDK的Demo
DEMO下载链接: http://download.csdn.net/detail/logicsboy/7535409 首先给你们恶补下啥是NDK:(我从百度Copy的) NDK全称:Native D ...
随机推荐
- CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
以下全部转载于 http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份, ...
- road习题(一)
答案:[D] 答案:[C] 分析需要靠人 答案:[B] 答案:[B] c语言本身支持自定义函数 答案:[B] Virtual User Generator:是一个脚本开发组件 说白了就是虚拟机用户发生 ...
- git入门网站
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git入门教程:对商业的.开源的. ...
- webbench---linux压测工具
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好用,安装使用也特别方便,并且非常小. 1.适用系统:Linux-CentOs 2.编译安 ...
- pm2.5检测统计
SELECT AVG(pm25_h),AVG(pm10_h),AVG(temp_h),AVG(humi_h),AVG(co2_h),AVG(tvoc_h),perf_time FROM( SELECT ...
- 第二章 NIO入门
传统的同步阻塞式I/O编程 基于NIO的非阻塞编程 基于NIO2.0的异步非阻塞(AIO)编程 为什么要使用NIO编程 为什么选择Netty 第二章 NIO 入门 2.1 传统的BIO编程 2.1.1 ...
- Centos系统下Lamp环境的快速搭建
首先为了搭建一个稳定的lamp的练习环境,确保你的虚拟机可以连网,这里我们使用的yum安装,它可以帮助我们解决软件自己的依赖关系.我还在后面加了postgresql数据库如果不需要的话可以去掉和pos ...
- android-studio-bundle-141.1980579-windows download Site
https://dl.google.com/dl/android/studio/install/1.2.2.0/android-studio-bundle-141.1980579-windows.ex ...
- Beam Search(集束搜索/束搜索)
找遍百度也没有找到关于Beam Search的详细解释,只有一些比较泛泛的讲解,于是有了这篇博文. 首先给出wiki地址:http://en.wikipedia.org/wiki/Beam_searc ...
- Centos screen远程会话管理命令
screen参数 -A 将所有的视窗都调整为目前终端机的大小. -d<作业名称> 将指定的screen作业离线. -h<行数> 指定视窗的缓冲区行数. -m 即使目前已在作业中 ...