标签:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity
- //第三个
<RelativeLayout
android:id="@+id/level3"
android:layout_width="280dp"
android:layout_height="140dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@drawable/level3" >
<ImageView
android:id="@+id/channel1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/channel1"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
/>
<ImageView
android:id="@+id/channel2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/channel1"
android:layout_alignLeft="@id/channel1"
android:layout_marginBottom="6dp"
android:layout_marginLeft="20dp"
android:background="@drawable/channel2" />
<ImageView
android:id="@+id/channel3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/channel2"
android:layout_alignLeft="@id/channel2"
android:layout_marginBottom="6dp"
android:layout_marginLeft="30dp"
android:background="@drawable/channel3" />
<ImageView
android:id="@+id/channel4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:background="@drawable/channel4" />
<ImageView
android:id="@+id/channel7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/channel7"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
/>
<ImageView
android:id="@+id/channel6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/channel7"
android:layout_alignRight="@id/channel7"
android:layout_marginBottom="6dp"
android:layout_marginRight="20dp"
android:background="@drawable/channel6" />
<ImageView
android:id="@+id/channel5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/channel6"
android:layout_alignRight="@id/channel6"
android:layout_marginBottom="6dp"
android:layout_marginRight="30dp"
android:background="@drawable/channel5" />
</RelativeLayout>
</RelativeLayout>
public class MyUtils {
/**
* 让指定的view 执行 旋转离开的动画
* @param view
*/
public static void startAnimOut(RelativeLayout view) {
startAnimOut(view, 0);
}
/**
* 让指定view 延时 执行旋转离开的动画,
* @param level3
* @param offset 延时的时间
*/
public static void startAnimOut(RelativeLayout view, long offset) {
/*
* 默认圆为 为view的左上角,
* 水平向右 为 0度
* 顺时针旋转度数增加
*/
RotateAnimation animation =new RotateAnimation(0, 180, view.getWidth()/2, view.getHeight());
animation.setDuration(500); // 设置运行的时间
animation.setFillAfter(true); //动画执行完以后,保持最后的状态
animation.setStartOffset(offset); // 设置延时执行的时间
view.startAnimation(animation);
}
/**
* 让指定的view 执行 旋转进入的动画
* @param view
*/
public static void startAnimIn(RelativeLayout view) {
startAnimIn(view, 0);
}
/**
* 让指定的view 延时执行 旋转进入的动画
* @param level2
* @param i 延时的时间
*/
public static void startAnimIn(RelativeLayout view, int i) {
/*
* 默认圆为 为view的左上角,
* 水平向右 为 0度
* 顺时针旋转度数增加
*/
RotateAnimation animation =new RotateAnimation(180, 360, view.getWidth()/2, view.getHeight());
animation.setDuration(500); // 设置运行的时间
animation.setFillAfter(true); //动画执行完以后,保持最后的状态
animation.setStartOffset(i); //设置延时执行的时间
view.startAnimation(animation);
}
}
public class MainActivity extends Activity implements OnClickListener {
private ImageView icon_menu;
private ImageView icon_home;
private RelativeLayout level1;
private RelativeLayout level2;
private RelativeLayout level3;
/**
* 判断 第3级菜单是否显示
* true 为显示
*/
private boolean isLevel3Show = true;
/**
* 判断 第2级菜单是否显示
* true 为显示
*/
private boolean isLevel2Show = true;
/**
* 判断 第1级菜单是否显示
* true 为显示
*/
private boolean isLevel1show = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
icon_home = (ImageView) findViewById(R.id.icon_home);
icon_menu = (ImageView) findViewById(R.id.icon_menu);
level1 = (RelativeLayout) findViewById(R.id.level1);
level2 = (RelativeLayout) findViewById(R.id.level2);
level3 = (RelativeLayout) findViewById(R.id.level3);
icon_home.setOnClickListener(this);
icon_menu.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.icon_menu: //处理 menu 图标的点击事件
// 如果第3级菜单是显示状态,那么将其隐藏
if(isLevel3Show){
//隐藏 第3级菜单
MyUtils.startAnimOut(level3);
}else{
// 如果第3级菜单是隐藏状态,那么将其显示
MyUtils.startAnimIn(level3);
}
isLevel3Show = !isLevel3Show;
break;
case R.id.icon_home: //处理 home 图标 的点击事件
// 如果第2级菜单是显示状态,那么就隐藏,2,3级菜单
if(isLevel2Show ){
MyUtils.startAnimOut(level2);
isLevel2Show = false;
if(isLevel3Show){ // 如果此时,第3级菜单也显示,那也将其隐藏
MyUtils.startAnimOut(level3,200);
isLevel3Show = false;
}
}else{
// 如果第2级菜单是隐藏状态,那么就显示2级菜单
MyUtils.startAnimIn(level2);
isLevel2Show = true;
}
break;
}
}
/**
* 改变第1级菜单的状态
*/
private void changeLevel1State() {
//如果第1级菜单是显示状态,那么就隐藏 1,2,3级菜单
if(isLevel1show){
MyUtils.startAnimOut(level1);
isLevel1show = false;
if(isLevel2Show){ // 判断2级菜单是否显示
MyUtils.startAnimOut(level2,100);
isLevel2Show = false;
if(isLevel3Show){ // 判断3级菜单是否显示
MyUtils.startAnimOut(level3,200);
isLevel3Show = false;
}
}
}else{
//如果第1级菜单是隐藏状态,那么就显示 1,2级菜单
MyUtils.startAnimIn(level1);
isLevel1show = true;
MyUtils.startAnimIn(level2,200);
isLevel2Show = true;
}
}
@Override
/**
* 响应按键的动作
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_MENU){ // 监听 menu 按键
changeLevel1State();
}
return super.onKeyDown(keyCode, event);
}
}
public class MainActivity extends Activity {
private ViewPager viewPager;
private LinearLayout pointGroup;
private TextView iamgeDesc;
// 图片资源ID
private final int[] imageIds = { R.drawable.a, R.drawable.b, R.drawable.c,
R.drawable.d, R.drawable.e };
//图片标题集合
private final String[] imageDescriptions = {
"巩俐不低俗,我就不能低俗",
"扑树又回来啦!再唱经典老歌引万人大合唱",
"揭秘北京电影如何升级",
"乐视网TV版大派送",
"热血屌丝的反杀"
};
private ArrayList<ImageView> imageList;
/**
* 上一个页面的位置
*/
protected int lastPosition;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
pointGroup = (LinearLayout) findViewById(R.id.point_group);
iamgeDesc = (TextView) findViewById(R.id.image_desc);
iamgeDesc.setText(imageDescriptions[0]);
imageList = new ArrayList<ImageView>();
for (int i = 0; i <imageIds.length; i++) {
//初始化图片资源
ImageView image = new ImageView(this);
image.setBackgroundResource(imageIds[i]);
imageList.add(image);
//添加指示点
ImageView point =new ImageView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.rightMargin = 20;
point.setLayoutParams(params);
point.setBackgroundResource(R.drawable.point_bg);
if(i==0){
point.setEnabled(true);
}else{
point.setEnabled(false);
}
pointGroup.addView(point);
}
viewPager.setAdapter(new MyPagerAdapter());
// viewPager.setCurrentItem(Integer.MAX_VALUE/2 - (Integer.MAX_VALUE/2%imageList.size())) ;
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
/**
* 页面切换后调用
* position 新的页面位置
*/
public void onPageSelected(int position) {
position = position%imageList.size();
//设置文字描述内容
iamgeDesc.setText(imageDescriptions[position]);
//改变指示点的状态
//把当前点enbale 为true
pointGroup.getChildAt(position).setEnabled(true);
//把上一个点设为false
pointGroup.getChildAt(lastPosition).setEnabled(false);
lastPosition = position;
}
@Override
/**
* 页面正在滑动的时候,回调
*/
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
}
@Override
/**
* 当页面状态发生变化的时候,回调
*/
public void onPageScrollStateChanged(int state) {
}
});
/*
* 自动循环:
* 1、定时器:Timer
* 2、开子线程 while true 循环
* 3、ColckManager
* 4、 用handler 发送延时信息,实现循环
*/
isRunning = true;
// handler.sendEmptyMessageDelayed(0, 2000);
}
/**
* 判断是否自动滚动
*/
private boolean isRunning = false;
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//让viewPager 滑动到下一页
viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
if(isRunning){
handler.sendEmptyMessageDelayed(0, 2000);
}
};
};
protected void onDestroy() {
isRunning = false;
};
private class MyPagerAdapter extends PagerAdapter {
@Override
/**
* 获得页面的总数
*/
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
/**
* 获得相应位置上的view
* container view的容器,其实就是viewpager自身
* position 相应的位置
*/
public Object instantiateItem(ViewGroup container, int position) {
System.out.println("instantiateItem ::"+position);
// 给 container 添加一个view
container.addView(imageList.get(position%imageList.size()));
//返回一个和该view相对的object
return imageList.get(position%imageList.size());
}
@Override
/**
* 判断 view和object的对应关系
*/
public boolean isViewFromObject(View view, Object object) {
if(view == object){
return true;
}else{
return false;
}
}
@Override
/**
* 销毁对应位置上的object
*/
public void destroyItem(ViewGroup container, int position, Object object) {
System.out.println("destroyItem ::"+position);
container.removeView((View) object);
object = null;
}
}
}
public class MainActivity extends Activity {
private EditText input;
private ImageView downArrow;
private List<String> msgList;
private PopupWindow popWin;
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
input = (EditText) findViewById(R.id.input);
downArrow = (ImageView) findViewById(R.id.down_arrow);
msgList = new ArrayList<String>();
for (int i = 0; i < 20; i++) {
msgList.add("1000000000"+i);
}
initListView();
downArrow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("=======");
//定义 popupWindow
popWin = new PopupWindow(MainActivity.this);
popWin.setWidth(input.getWidth()); //设置宽度
popWin.setHeight(200); //设置popWin 高度
popWin.setContentView(listView); //为popWindow填充内容
popWin.setOutsideTouchable(true); // 点击popWin 以处的区域,自动关闭 popWin
popWin.showAsDropDown(input, 0, 0);//设置 弹出窗口,显示的位置
}
});
}
private void initListView() {
listView = new ListView(this);
listView.setBackgroundResource(R.drawable.listview_background); //设置listView 背景
listView.setDivider(null); //设置条目之间的分隔线为null
listView.setVerticalScrollBarEnabled(false); // 关闭
listView.setAdapter(new MyListAdapter());
}
private class MyListAdapter extends BaseAdapter{
@Override
public int getCount() {
return msgList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
convertView = View.inflate(getApplicationContext(), R.layout.list_item, null);
holder = new ViewHolder();
holder.delete = (ImageView) convertView.findViewById(R.id.delete);
holder.tv_msg =(TextView) convertView.findViewById(R.id.tv_list_item);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv_msg.setText(msgList.get(position));
holder.delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//删除对应的条目
msgList.remove(position);
//刷新listView
MyListAdapter.this.notifyDataSetChanged();
}
});
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//设置输入框
input.setText(msgList.get(position));
popWin.dismiss();
}
});
return convertView;
}
}
private class ViewHolder{
TextView tv_msg;
ImageView delete;
}
}
标签:
原文地址:http://www.cnblogs.com/liuyu0529/p/5021875.html