一步一步学android控件(之一) —— 开始篇
android 控件众多 , 额 , 具体多少个呢? 貌似有那么几十个吧,也没做个统计,嘿嘿!......
有木有朋友感觉写了那么长时间的android代码,有时候想写点自己的东西的时候却发现自己好像离不开网络耶,什么都需要先到网络上遨游一番才能解决自己的问题。思前想后,个人觉得还是有必要巩固一下自己学习过的东西——想想以前这些东西,自己都写过一遍了,但是折腾一段时间下来都不知道放哪里去了........
好了,废话不多说了,这次准备重新学习一下android的常用控件TextView、EditText、AutoCompleteTextView、Button、CalendarView、CheckBox、Chronometer、CompoundButton、DatePicker、DigitalClock、ExpandableListView、Gallery、GridView、HorizontalScrollView、ImageButton、ImageSwitcher、ImageView、ListPopupWindow、ListView、MultiAutoCompleteTextView、NumberPicker、PopupMenu、PopupWindow、ProgressBar、QuickContactBadge、RadioButton、RadioGroup、RatingBar、RemoteViews、ScrollView、SearchView、SeekBar、SlidingDarwer、Switch、TableHost、TextClock、TextSwitcher、TimePicker、Toast、ToggleButton、VideoView、ViewFlipper、ViewSwitcher、ZoomButton等控件。
今天的工作了不介绍任何的控件,先将整个框架搭建起来:进入应用,我们将看到一个列表(现在还没有加入任何东西),每个列表项对应我们将要学习的控件(如:点击TextView,点击TextView后,详细学习TextView)。
下面先开始准备工作,创建一个android工程——SelfdefineWieget,其目录结构如下:
在创建工程中会让指定一个MainActivity,将其命名为WidgetMainActivity即可。下面的两个类ViewData和WidgetsAdapter属于后面创建的,具体功能后面再解释。
下面看看ViewData.java类
[java]
import java.util.ArrayList;
final public class ViewData {
public final static ArrayList<ViewData> View_Datas = new ArrayList<ViewData>();
public static final int TEXT_VIEW_ID = 90000;
public static final String TEXT_VIEW_NAME = "TextView";
private static final ViewData mTextView = new ViewData(TEXT_VIEW_NAME,
TEXT_VIEW_ID);
public final String mViewName;
public final int mViewId;
private ViewData(String name, int id) {
mViewName = name;
mViewId = id;
}
static {
View_Datas.add(mTextView);
}
}
这是一个配置类,比较独立。 *_NAME指定了要学习的控件的名称,*_ID是为了后面操作方便添加了自定义的ID,一个ID唯一对应一个控件——目前只添加了一个控件(TextView)。
主activity(该Activity就是一个ListView,ListView中每一个item指定了将学习的控件名称)——WidgetMainActivity.java的内容如下:
[java]
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class WidgetMainActivity extends Activity {
private ListView mWidgetNames;
private WidgetsAdapter mWidgetsAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_widget_main);
init();
}
private void init() {
mWidgetsAdapter = new WidgetsAdapter(this);
mWidgetNames = (ListView) findViewById(R.id.widget_list_view);
mWidgetNames.setAdapter(mWidgetsAdapter);
}
}
可以看到这里使用到了WidgetsAdapter,不急,这就来一探究竟——WidgetsAdapter.java
[java]
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.xy.zt.selfdefinewieget.data.ViewData;
public class WidgetsAdapter extends BaseAdapter implements OnClickListener {
private Context mContext;
private LayoutInflater mInflater;
ArrayList<ViewData> mLocalData = ViewData.View_Datas;
private int mSelectedItemPos = -1;
public WidgetsAdapter(Context context) {
if (context == null) {
throw new IllegalArgumentException(
"in constructor WidgetsAdapter: context mustn't be null !");
}
mContext = context;
mInflater = LayoutInflater.from(mContext);
}
public int getCount() {
return mLocalData.size();
}
public Object getItem(int position) {
if (position < 0 || position >= mLocalData.size())
return null;
return mLocalData.get(position);
}
public long getItemId(int position) {
if (position < 0 || position >= mLocalData.size())
return -1;
return mLocalData.get(position).mViewId;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.view_list_item_layout,
null);
holder = new ViewHolder();
holder.mListItem = (TextView) convertView
.findViewById(R.id.item_view_name);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String itemStr = mLocalData.get(position).mViewName;
holder.mListItem.setText(itemStr);
convertView.setOnClickListener(this);
mSelectedItemPos = position;
return convertView;
}
static class ViewHolder {
TextView mListItem;
}
public void onClick(View v) {
int action = mLocalData.get(mSelectedItemPos).mViewId;
handleItemClicked(action);
}
private void handleItemClicked(int action) {
switch (action) {
case ViewData.TEXT_VIEW_ID:
break;
}
}
}
该类将会加载所有的控件信息,并且通过view_list_item_layout(布局文件)显示到界面上。
注:在这里使用ListView的OnItemClickListener更好,View.OnClickeListener在某些情况会比较实用(如:相应Item中某个元素的点击事件)。
在上面我们看到了两个布局文件view_list_item_layout 和activity_widget_main,他们使用在哪个类参看上面的代码,下面列举各布局文件的类容。activity_widget_main.xml
[html]
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
</ListView>
很简单是吧,对就只有一个控件ListView,用来盛装各个控件名字的“列表”。view_list_item_layout .xml 该文件指定了ListView中每个Item将如何呈现,其内容如下:
[html]
<?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="wrap_content" >
<TextView
android:id="@+id/item_view_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="20sp" />
</LinearLayout>
大概了内容就这样了,额,对了还是看看AndroidManifest.xml文件(后续在这里面添加的东西会很多哦*^_^*)
[java]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xy.zt.selfdefinewieget"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".WidgetMainActivity"
android:label="@string/title_activity_widget_main"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
起步的内容就差不多了(其他的内容都是创建工程时默认生成的)。今天就到这里了,明天 TextView .
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 11-18LG新能源宣布与Bear Robotics达成合作,成为
- 11-18机构:三季度全球个人智能音频设备市场强势
- 11-18闲鱼:注册用户过6亿 AI技术已应用于闲置交
- 11-18美柚、宝宝树回应“涉黄短信骚扰”:未发现
- 11-01京东七鲜与前置仓完成融合
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御