黑马程序员技术交流社区
标题:
导航菜单横向左右滑动并和下方的控件实现联动源码
[打印本页]
作者:
广驰
时间:
2013-5-23 11:34
标题:
导航菜单横向左右滑动并和下方的控件实现联动源码
本帖最后由 广驰 于 2013-5-23 11:36 编辑
实现原理是上方使用HorizontalScrollView这个可以水平横向拖动的控件,在其中加入了5个RadioButton;下方使用的是ViewPager,里面加入了7个Layout文件,其中第一个和最后一个为空,是为了实现拖到第一个屏幕的时候还能往外拖动的效果
未命名.gif
(452.13 KB, 下载次数: 3)
下载附件
2013-5-23 11:33 上传
作者:
绿影
时间:
2013-5-23 11:36
这个样子!
作者:
广驰
时间:
2013-5-23 11:37
本帖最后由 广驰 于 2013-5-23 11:38 编辑
package com.zj.popupwindow;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.PopupWindow.OnDismissListener;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean mIsopen = false; //是否已经打开
private ImageView mImageView; //三角形图标
private LinearLayout mLinearLayout;
private PopupWindow mPopupWindow;
private ArrayList<HashMap<String, Object>> mArrayList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLinearLayout = (LinearLayout)findViewById(R.id.pop_parent);
mImageView = (ImageView)findViewById(R.id.imageView1);
mLinearLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mIsopen = !mIsopen;
if (mIsopen) {
mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
}else {
mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
}
//设置popupwindow中的listView
mArrayList = createData();
View _View = getLayoutInflater().inflate(R.layout.popupwindow, null);
ListView _ListView = (ListView) _View.findViewById(R.id.list);
SimpleAdapter _SimpleAdapter = new SimpleAdapter(
MainActivity.this, mArrayList,
R.layout.listview_item, new String[]{"zj"},
new int[]{R.id.list_item_txt}
);
_ListView.setAdapter(_SimpleAdapter);
_ListView.setOnItemClickListener(new MyListOnItemClick());
/*
* 这个去掉了也没什么影响,先留下
* 通过ListView的setItemsCanFocus(true)方法并不可以使ItemView
* 在touch mode下可以获取焦点,他只是表明在由ListAdapter创建的视图中
* ,可包含能获得焦点的项目.
*/
_ListView.setItemsCanFocus(false);
//设置PopupWindow
mPopupWindow = new PopupWindow(
_View,
160,
220
);
//注意下面所做的4条是为了使 点击popuWindow 以外的区域能够关闭它。
// 使其聚焦
mPopupWindow.setFocusable(true);
// 设置允许在外点击消失
mPopupWindow.setOutsideTouchable(true);
//刷新状态
mPopupWindow.update();
//点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.showAsDropDown(findViewById(R.id.pop_parent), -50, 0);
//mPopupWindow.showAtLocation(findViewById(R.id.pop_parent), Gravity.CENTER_HORIZONTAL | Gravity.TOP, 0, (int)getResources().getDimension(R.dimen.pop_y));
mPopupWindow.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
mIsopen = ! mIsopen;
if (mIsopen) {
mImageView.setBackgroundResource(R.drawable.icon_arrow_down);
}else {
mImageView.setBackgroundResource(R.drawable.icon_arrow_up);
}
Log.i("zj", "onDismiss");
}
});
}
});
}
private ArrayList<HashMap<String, Object>> createData(){
HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("zj", "美食");
HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put("zj", "娱乐");
HashMap<String, Object> map3 = new HashMap<String, Object>();
map3.put("zj", "购物");
HashMap<String, Object> map4 = new HashMap<String, Object>();
map4.put("zj", "电影");
ArrayList<HashMap<String, Object>> _ArrayList = new ArrayList<HashMap<String,Object>>();
_ArrayList.add(map1);
_ArrayList.add(map2);
_ArrayList.add(map3);
_ArrayList.add(map4);
return _ArrayList;
}
class MyListOnItemClick implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
HashMap<String, Object> temp = mArrayList.get(arg2);
mPopupWindow.dismiss();
Toast.makeText(MainActivity.this, temp.get("zj").toString(), 1).show();
}
}
复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="50dp"
android:fadingEdge="@null"
android:scrollbars="none"
android:background="#555555"
android:id="@+id/horizontalScrollView"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#33b5e5"
>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="fill_parent"
android:layout_height="49dp"
android:orientation="horizontal"
android:layout_alignParentTop="true"
>
<RadioButton
style="@style/radioButton"
android:text="one"
android:id="@+id/btn1"
/>
<RadioButton
style="@style/radioButton"
android:text="two"
android:id="@+id/btn2"
/>
<RadioButton
style="@style/radioButton"
android:text="three"
android:id="@+id/btn3"
/>
<RadioButton
style="@style/radioButton"
android:text="four"
android:id="@+id/btn4"
/>
<RadioButton
style="@style/radioButton"
android:text="five"
android:id="@+id/btn5"
/>
</RadioGroup>
<ImageView
android:id="@+id/img1"
android:layout_width="100dp"
android:layout_height="4dp"
android:background="#33b5e5"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
</HorizontalScrollView>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
复制代码
作者:
王宝康
时间:
2013-5-23 12:31
:handshake
作者:
凊係柈泩
时间:
2013-5-23 15:24
收藏了很有用
作者:
杨彪
时间:
2013-5-23 16:15
学习一下啊
作者:
03jinquan23
时间:
2013-5-23 16:20
thank you @@
作者:
陈汉维
时间:
2013-5-23 21:54
看看看看看
作者:
myclover
时间:
2013-5-23 23:02
挺不错的啊
作者:
周志强
时间:
2013-5-24 23:40
学习了
加油
作者:
一身顺利
时间:
2013-5-24 23:56
好东东。
作者:
vipzh
时间:
2013-5-26 21:18
支持一下。。。。
作者:
风吹我走路
时间:
2013-5-28 00:56
这个很好用
作者:
乐峰
时间:
2013-5-28 21:43
偶吧。。加油哦
作者:
Bcisk
时间:
2013-5-28 22:10
dddddddddddddddddddddddddddddddddd
作者:
geozhang
时间:
2013-6-8 16:25
很好。学习。多谢楼主!
作者:
geozhang
时间:
2013-6-8 16:25
很好。学习。多谢楼主!
作者:
403016605
时间:
2013-6-22 17:04
顶楼主,学习 了
作者:
丘凤光
时间:
2013-7-8 21:38
要是能再美化美化就更好了
作者:
李玉生
时间:
2013-7-28 20:27
这个东东从哪来的,我好像看到过
作者:
张东贤
时间:
2013-7-30 03:21
嗯.很明显这个东西的出处在哪了..3q
作者:
星月苍穹
时间:
2013-7-30 09:24
下载学习,谢谢啊
作者:
王亚男
时间:
2013-7-30 10:46
这个一定得学习下!
作者:
jonn
时间:
2013-9-6 01:49
。。。。。。。
作者:
夏晓彤
时间:
2013-9-22 20:33
顶一下
作者:
suiyuan_lin
时间:
2013-9-23 22:46
好东西,赞一个
作者:
suiyuan_lin
时间:
2013-9-23 22:46
不错,赞一个
作者:
姝然
时间:
2013-9-25 22:23
ddddddddddddddddddddddddddd
作者:
ssd不会
时间:
2013-9-27 15:54
很好啊,哈哈
作者:
山楂
时间:
2013-10-3 01:52
这个么好东西,谢谢分享
作者:
whj11
时间:
2013-11-11 23:15
瞧瞧
作者:
librazeng
时间:
2013-11-17 10:22
这个实现起来不麻烦吧
作者:
Zhen_霖
时间:
2013-11-17 22:39
我就看看
作者:
gis_zhouda
时间:
2013-11-27 14:19
看看 学习下
作者:
kangqbing
时间:
2013-12-2 19:53
导航菜单横向左右滑动并和下方的控件实现联动源码
作者:
慢灵魂
时间:
2013-12-2 21:13
谢谢分享了
作者:
编织者
时间:
2013-12-5 20:16
的顶顶顶顶顶
作者:
huangtk
时间:
2013-12-13 16:43
非常好,谢谢分享!
作者:
amtest1111
时间:
2014-7-2 21:55
:)
作者:
大山
时间:
2015-2-26 16:46
好东西就要学习下
作者:
大山
时间:
2015-2-26 16:48
好东西就要学习下
作者:
致青春
时间:
2015-8-20 19:03
谢谢分享
作者:
Alone_G4ykq
时间:
2015-11-5 19:56
dsgreffef4rt
作者:
天人之珠
时间:
2015-11-6 15:41
收藏了很有用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2