XML文件
main.xml文件
两个控件按钮btnListView和btnSlidingDrawer
<Button
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/listviewStr" />
<Button
android:id="@+id/btnSlipdingdrawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slidingDrawerStr" />
mylistview.xml文件
一个控件ListView
<?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:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
mylistview_item.xml文件
两个控制:一个ImageView和一个TextView
<?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:orientation="horizontal" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/a" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
myslidingdrawer.xml文件
<?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:orientation="vertical" >
<SlidingDrawer
android:id="@+id/slidingDrawer1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:content="@+id/content"
android:handle="@+id/handle" >
<Button
android:id="@+id/handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Handle" />
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/slidingDrawerListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</ListView>
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
AndroidMainfest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.newer.p0202"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".P0202Activity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MyListView"></activity>
<activity android:name="MySlidingDrawer"></activity>
<activity android:name="MyViewFlipper"></activity>
</application>
</manifest>
java代码
P0202Activity类
主页面继承Activity实现OnClickListenere
public class P0202Activity extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstenceState);
setContentView(R.layout.main);
//启动ListView Activity按钮
Button btnListView = (Button)findViewById(R.id.listView);
btnListView.setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.listView:
Intent intent = new Intent(this,MyListView.class);
startActivity(intent);
break;
case R.id.btnSlidingdrawer:
Intent intent2 = new Intent(this,MySlidingDrawer.class);
startActivity(intent2);
break;
default:
break;
}
}
}
MyListView类继承Activity
public class MyListView extends Activity{
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.mylistview);
//模拟数据
List<DataBean> dataList = new ArrayList<DataBean>();
for(int idx=0;idx<20;idx++){
//具体的每一条数据
DataBean dataBean = new DataBean();
dataBean.imageId = R.drawable.a;
dataBean.imageDescription = "具体的说明"+idx;
dataList.add(dataBean);
}
MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
//得到listview控件
ListView listView = (ListView)findViewById(R.id.listView1);
//设置适配器,让listview根据适配器来显示数据
listView.setAdapter(myListViewAdapter);
}
}
创建一个类DataBean
public class DataBean{
public int imageId;
public String imageDescription;
}
创建一个类MyHandler
public class MyHandler{
public ImageView imageView;
public TextView textView;
}
适配器类:
MyListViewAdapter类继承BaseAdapter
public class MyListViewAdapter extends BaseAdapterP{
public int getCount(){
return dataList.size();
}
public Object getItem(int position){
return null;
}
public long getItemId(int position){
return 0;
}
public View getView(int position, View convertView, ViewGroup parent){
//三种方式
//LayoutInflater.from(context);
//(LinearLayout)activity.getlayoutInflater();
//LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//样式膨胀(要从layout资源中动态的读取一个XML文档)
//效率差的方式
//LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
//得到当前线性布局的两个控件
//ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
//TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
//imageView.setImageResource(dataList.get(position).imageId);
//textView.setText(dataList.get(position).imageDescription);
//return lineanLayout;
//效率高的方式
MyHandler myHandler = new MyHandler();
if(null == convertView){//刚开始第一次convertView里面是没有对象
LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
//得到当前线性布局的两个控件
ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
myHandler.imageView = imageView;
myHandler.textView = textView;
convertView = lineanLayout;
}
myHandler = (MyHandler)convertView.getTag();
myHandler.imageView.setImageResoure(dataList.get(position).imageId);
myHandler.textView.setText(dataList.get(position).imageDescription);
return convertView;
}
}
MySlidingDrawer类继承Activity
public class MySlidingDrawer extends Activity{
protected void onCreate(Bundler savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.myslidingdrawer);
//模拟数据
List<DataBean> dataList = new ArrayList<DataBean>();
for(int idx=0;idx<20;idx++){
//具体的每一条数据
DataBean dataBean = new DataBean();
dataBean.imageId = R.drawable.a;
dataBean.imageDescription = "具体的说明"+idx;
dataList.add(dataBean);
}
MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
ListView listView = (ListView)findViewById(R.id.slidingDrawerListView);
listView.setAdapter(myListViewAdapter);
}
}
main.xml文件
两个控件按钮btnListView和btnSlidingDrawer
<Button
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/listviewStr" />
<Button
android:id="@+id/btnSlipdingdrawer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slidingDrawerStr" />
mylistview.xml文件
一个控件ListView
<?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:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
mylistview_item.xml文件
两个控制:一个ImageView和一个TextView
<?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:orientation="horizontal" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/a" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
myslidingdrawer.xml文件
<?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:orientation="vertical" >
<SlidingDrawer
android:id="@+id/slidingDrawer1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:content="@+id/content"
android:handle="@+id/handle" >
<Button
android:id="@+id/handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Handle" />
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/slidingDrawerListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</ListView>
</LinearLayout>
</SlidingDrawer>
</LinearLayout>
AndroidMainfest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.newer.p0202"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".P0202Activity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MyListView"></activity>
<activity android:name="MySlidingDrawer"></activity>
<activity android:name="MyViewFlipper"></activity>
</application>
</manifest>
java代码
P0202Activity类
主页面继承Activity实现OnClickListenere
public class P0202Activity extends Activity implements OnClickListener{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstenceState);
setContentView(R.layout.main);
//启动ListView Activity按钮
Button btnListView = (Button)findViewById(R.id.listView);
btnListView.setOnClickListener(this);
}
public void onClick(View v){
switch(v.getId()){
case R.id.listView:
Intent intent = new Intent(this,MyListView.class);
startActivity(intent);
break;
case R.id.btnSlidingdrawer:
Intent intent2 = new Intent(this,MySlidingDrawer.class);
startActivity(intent2);
break;
default:
break;
}
}
}
MyListView类继承Activity
public class MyListView extends Activity{
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.mylistview);
//模拟数据
List<DataBean> dataList = new ArrayList<DataBean>();
for(int idx=0;idx<20;idx++){
//具体的每一条数据
DataBean dataBean = new DataBean();
dataBean.imageId = R.drawable.a;
dataBean.imageDescription = "具体的说明"+idx;
dataList.add(dataBean);
}
MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
//得到listview控件
ListView listView = (ListView)findViewById(R.id.listView1);
//设置适配器,让listview根据适配器来显示数据
listView.setAdapter(myListViewAdapter);
}
}
创建一个类DataBean
public class DataBean{
public int imageId;
public String imageDescription;
}
创建一个类MyHandler
public class MyHandler{
public ImageView imageView;
public TextView textView;
}
适配器类:
MyListViewAdapter类继承BaseAdapter
public class MyListViewAdapter extends BaseAdapterP{
public int getCount(){
return dataList.size();
}
public Object getItem(int position){
return null;
}
public long getItemId(int position){
return 0;
}
public View getView(int position, View convertView, ViewGroup parent){
//三种方式
//LayoutInflater.from(context);
//(LinearLayout)activity.getlayoutInflater();
//LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//样式膨胀(要从layout资源中动态的读取一个XML文档)
//效率差的方式
//LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
//得到当前线性布局的两个控件
//ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
//TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
//imageView.setImageResource(dataList.get(position).imageId);
//textView.setText(dataList.get(position).imageDescription);
//return lineanLayout;
//效率高的方式
MyHandler myHandler = new MyHandler();
if(null == convertView){//刚开始第一次convertView里面是没有对象
LayoutInflater layoutInflater = (LayoutInflater)myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout lineanLayout = (LinearLayout)layoutInflater.inflater(R.layout.mylistview_item,null);
//得到当前线性布局的两个控件
ImageView imageView = (ImageView)lineanLayout.findViewById(R.id.imageView1);
TextView textView = (TextView)lineanLayout.findViewById(R.id.textView1);
myHandler.imageView = imageView;
myHandler.textView = textView;
convertView = lineanLayout;
}
myHandler = (MyHandler)convertView.getTag();
myHandler.imageView.setImageResoure(dataList.get(position).imageId);
myHandler.textView.setText(dataList.get(position).imageDescription);
return convertView;
}
}
MySlidingDrawer类继承Activity
public class MySlidingDrawer extends Activity{
protected void onCreate(Bundler savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.myslidingdrawer);
//模拟数据
List<DataBean> dataList = new ArrayList<DataBean>();
for(int idx=0;idx<20;idx++){
//具体的每一条数据
DataBean dataBean = new DataBean();
dataBean.imageId = R.drawable.a;
dataBean.imageDescription = "具体的说明"+idx;
dataList.add(dataBean);
}
MyListViewAdapter myListViewAdapter = new MyListViewAdapter(dataList,this);
ListView listView = (ListView)findViewById(R.id.slidingDrawerListView);
listView.setAdapter(myListViewAdapter);
}
}
相关推荐
5. **布局设计**: 在XML布局文件中,将ListView和SlidingDrawer(或NavigationView)并排放置。注意调整各自的宽高和相对位置,确保用户体验良好。 6. **样式定制**: 可以通过修改默认的样式文件(如styles.xml)或...
本文将深入探讨Android的SlidingDrawer及其在不同场景下的应用,包括与ListView、ScrollView和RecyclerView的集成。 首先,SlidingDrawer是一个原生Android控件,它提供了上滑开启、下滑关闭的功能,并具有自动回弹...
在给定的示例中,SlidingDrawer被用来展示一个包含手机上已安装应用的GridView,这对于初学者来说是一个很好的实践案例,因为它结合了多个关键的Android组件和概念。 首先,我们来深入理解SlidingDrawer的使用方法...
抽屉通常由一个可滑动的ViewGroup(如HorizontalScrollView或ListView)和一个触发器(如ImageView或Button)组成。触发器用来启动抽屉的滑动动画。 src目录包含Java源代码,其中的Activity类是实现抽屉效果的关键...
本项目涉及的核心知识点是“Android自定义A_Z字母排序ListView”,以及实现“悬停Listview”和“字母列表索引”。 首先,我们要理解ListView的基础工作原理。ListView通过Adapter来填充数据,并通过ViewHolder模式...
在Android中,实现这一效果通常使用`SlidingDrawer`(已被弃用)或者`NavigationView`,但现在更流行的是自定义布局和手势检测,比如使用`GestureDetector`和`Scroller`来实现更为灵活的侧滑效果。 其次,Fragment...
在这个特定的案例中,我们关注的是ListView的两种增强功能:字母排序(Alphabetical Indexing)和过滤搜索(Filter Search)。这两种特性使得用户能够更方便地浏览和查找列表中的项目。 首先,让我们详细了解一下...
【描述】"超炫的屏幕滑动,和listview下拉刷新功能"提到了两个关键的技术点:屏幕滑动效果和ListView的下拉刷新。屏幕滑动效果是UI设计的一部分,通常通过手势识别和动画处理来实现,旨在提供流畅且吸引人的用户体验...
抽屉效果有两个主要实现方式:`DrawerLayout`和`SlidingDrawer`。 1. **DrawerLayout**: `DrawerLayout`是Android SDK中的一个布局组件,它主要用于实现类似Google Play、Google Maps那样的侧滑菜单。`...
SlidingDrawer由两部分组成:把手(handle)和内容区(content)。把手是用户触摸并拖动以打开或关闭抽屉的部分,内容区则包含要显示的菜单或列表。在XML布局文件中,SlidingDrawer需要设置这两个子视图,并指定它们...
1. DrawerLayout 的第一个子元素必须是默认内容,即抽屉没有打开时显示的布局(如 FrameLayout),后面紧跟的子元素是抽屉内容,即抽屉布局(如 ListView)。 2. 抽屉菜单的摆放和布局通过 android:layout_gravity ...
private ListView mListView; private SlidingDrawer slidingDrawer ; // 定义SlidingDrawer private ImageView handle; //歌曲数据库 Cursor cur; // 声明改变TextView内容的线程 TimeThread th; // 控制...
`SlidingDrawer`是Android早期版本中的一个自定义视图,它可以创建一个可滑动的抽屉,包含顶部和底部的柄以及内容区域。 **SlidingDrawer的使用步骤:** 1. **在布局XML中添加SlidingDrawer:** 在你的布局文件中...
在Android中,有两种主要的方式来实现抽屉效果,即使用`SlidingDrawer`(已废弃)和`DrawerLayout`。 1. **SlidingDrawer**: - `SlidingDrawer`是早期Android版本中用来实现抽屉效果的类,它提供了一个可上下或...
7. **带列表的抽屉**:在抽屉布局中嵌入ListView,与上述步骤类似,但需注意抽屉打开和关闭时的动画效果,这可以通过调整`DrawerLayout`的属性来实现。 通过以上步骤,我们可以创建一个从SD卡读取.txt文件并显示在...
自定义侧滑菜单可以基于SlidingDrawer或者使用GestureDetector来检测用户的滑动手势。在实现过程中,我们需要创建一个可以滑动的视图容器,监听滑动事件,然后根据滑动的距离和方向来控制菜单的显示和隐藏。 总结...
ListView navDrawer = (ListView) findViewById(R.id.navdrawer); // 设置菜单项 navDrawer.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> ...
"安卓上拉刷新和侧滑面板小demo" 是一个针对安卓平台的示例项目,它涵盖了两个关键功能:上拉刷新(Pull-to-Refresh)和侧滑面板(Swipeable Drawer)。这两个特性在现代移动应用中非常常见,用于提供更流畅和互动的...
在Android中,可以使用SlidingDrawer或NavigationView实现侧滑菜单效果;而搜索栏则通常结合EditText和AutoCompleteTextView来提供自动补全功能,用户输入部分城市名时,系统会自动列出匹配的结果。 4. **适配...
在`SlidingDrawerExample-master`中,可能包含了如何配置SlidingDrawer,设置手柄和内容视图,以及处理触摸事件的代码示例。 2. **第三方库**:随着SlidingDrawer的弃用,开发者开始转向第三方库,如`androidx....