android入门——UI(6)——ViewPager+Menu+PopupWindow
一、使用ViewPager开发新特性引导界面
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager
android:id="@+id/my_view_pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:overScrollMode="never"> </android.support.v4.view.ViewPager>
</RelativeLayout>
viewpager_index.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <ImageView
android:id="@+id/item_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
item_view_pager.xml
package com.ouc.wkp.ui1; import android.app.Activity;
import android.graphics.Color;
import android.media.Image;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; import java.util.ArrayList;
import java.util.List; /**
* Created by wkp on 2016/8/24.
*/
public class ViewPagerDemo extends Activity {//开发新特性引导界面 ViewPager viewPager; List<View> viewList = new ArrayList<>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_index); viewPager = (ViewPager) findViewById(R.id.my_view_pager); {
View view = LayoutInflater.from(this).inflate(R.layout.item_view_pager, null);
ImageView imageView = (ImageView) view.findViewById(R.id.item_image_view);
imageView.setBackgroundColor(Color.RED);
viewList.add(view);
}
{
View view = LayoutInflater.from(this).inflate(R.layout.item_view_pager, null);
ImageView imageView = (ImageView) view.findViewById(R.id.item_image_view);
imageView.setBackgroundColor(Color.GREEN);
viewList.add(view);
}
{
View view = LayoutInflater.from(this).inflate(R.layout.item_view_pager, null);
ImageView imageView = (ImageView) view.findViewById(R.id.item_image_view);
imageView.setBackgroundColor(Color.BLUE);
viewList.add(view);
} viewPager.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
} @Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
}
});
}
}
ViewPagerDemo.java
运行效果就是红蓝绿三页左右滑动不方便演示。具体开发时请使用好看的图片。
二、使用Menu编写菜单,注意创建模拟器的时候在skin中设置skin with dynamic hardware controls。
首先我们在res文件夹下创建menu文件夹,再在menu文件下创建Menu resource file
创建xml编写菜单项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/main_menu_1"
android:icon="@drawable/menu1"
android:title="菜单一"/> <item android:id="@+id/main_menu_2"
android:icon="@drawable/menu2"
android:title="菜单二"/> <item android:id="@+id/main_menu_3"
android:icon="@drawable/menu3"
android:title="菜单三"/> </menu>
main_menu.xml
一个空壳布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> </LinearLayout>
menu_index
主程序
package com.ouc.wkp.ui1; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast; import java.lang.reflect.Method; /**
* Created by wkp on 2016/8/24.
*/
public class MenuDemo extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_index);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// menu.add("菜单1");
// menu.add("菜单2");
// menu.add("菜单3");
// menu.add("菜单4");
setIconEnable(menu,true);
new MenuInflater(this).inflate(R.menu.main_menu,menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.main_menu_1:
//处理第一个菜单的点击事件
Toast.makeText(this,"用户点击了"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case R.id.main_menu_2:
Toast.makeText(this,"用户点击了"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
case R.id.main_menu_3:
Toast.makeText(this,"用户点击了"+item.getTitle(),Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
} //enable为true时,菜单添加图标有效,enable为false时无效,4.0系统默认无效
private void setIconEnable(Menu menu,boolean enable){
try{
Class<?> clazz=Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m=clazz.getDeclaredMethod("setOptionalIconsVisible",boolean.class);
m.setAccessible(true); //MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java多态)
m.invoke(menu,enable);
}catch(Exception e){
e.printStackTrace();
}
}
}
MenuDemo.java
注意我们写一个方法
然后通过setIconEnable(menu,true)来为菜单添加图标
下面的代码是弹出提示
运行效果
三、使用PopupWindow写弹出窗
总体布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/btn_pop_window"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="弹出popWindow"/>
</RelativeLayout>
pop_window_index.xml
弹出窗布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#bbbbbb"> <TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/tv_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <Button
android:id="@+id/btn_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"/> <Button
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定"/>
</LinearLayout>
</LinearLayout>
pop_window.xml
主程序
package com.ouc.wkp.ui1; import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast; /**
* Created by wkp on 2016/8/25.
*/
public class PopWindowDemo extends Activity{ PopupWindow popupWindow; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pop_window_index); findViewById(R.id.btn_pop_window).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//弹出
// popupWindow.showAsDropDown(view);
//进行屏幕居中显示
popupWindow.showAtLocation(PopWindowDemo.this.getWindow().getDecorView(), Gravity.CENTER,0,0);
}
}); View view= LayoutInflater.from(this).inflate(R.layout.pop_window,null);
((TextView)view.findViewById(R.id.tv_title)).setText("标题");
((TextView)view.findViewById(R.id.tv_msg)).setText("这里是popwindow显示的消息内容"); //点击关闭
view.findViewById(R.id.btn_ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"您点击了确定按钮",Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
}); view.findViewById(R.id.btn_cancle).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"您点击了取消按钮",Toast.LENGTH_SHORT).show();
popupWindow.dismiss();
}
}); popupWindow=new PopupWindow(view, WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT);
//点击外部消失
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setFocusable(true);
}
}
PopWindowDemo.java
运行效果
android入门——UI(6)——ViewPager+Menu+PopupWindow的更多相关文章
- Android开发UI之ViewPager及PagerAdapter
ViewPager,官网链接--http://developer.android.com/reference/android/support/v4/view/ViewPager.html ViewPa ...
- Android入门——UI(8)——Fragment(2)
先演示一下如何在一个activity中放置两个Fragment,先定义两个Fragment <?xml version="1.0" encoding="utf-8& ...
- Android入门——UI(9)
SwipRefreshLayout下拉刷新控件 <?xml version="1.0" encoding="utf-8"?> <android ...
- Android入门——UI(7)——Fragment
先上fragment静态加载的代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- android入门——UI(5)
最近时间实在匆忙,博客的代码基本没有解释. 介绍ExpandableListView <?xml version="1.0" encoding="utf-8&quo ...
- android入门——UI(4)
GridView控件实现菜单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- android入门——UI(3)
Spinner控件 ListView控件 一.Spinner控件 点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值. 有两种指定数据源的 ...
- Android入门——UI(2)
介绍SeekBar拖动条控件.ProgressBar进度条控件.DatePicker日历控件.TimePicker时间控件 <?xml version="1.0" encod ...
- android入门——UI(1)
一.使用TextView ImageView Button EditView做出登录页面 <?xml version="1.0" encoding="utf-8&q ...
随机推荐
- C#反射的应用【转】
摘要: 对于反射贫道也是很陌生的,所以趁现在有时间就把反射看了一下,记下笔记!!! 初始听说反射是可以动态的调用程序集,并从中来获取相应的方法和属性,感觉比较神奇,,, 反射的定义:反射(Reflec ...
- 大数据Lambda架构
1 Lambda架构介绍 Lambda架构划分为三层.各自是批处理层,服务层,和加速层.终于实现的效果,能够使用以下的表达式来说明. query = function(alldata) 1.1 批处理 ...
- lua的string库与强大的模式匹配
lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成 ...
- 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式
临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...
- C#中T的用法
之前一直用List<T>这样的泛型,看到过有些参数类型也可以直接用T的,觉得很好用,但是一直用不了,现在才发现原来是少加了<T> public T getdate<T&g ...
- javascript高级知识分析——函数访问
代码信息来自于http://ejohn.org/apps/learn/. 可以通过函数的名字在它的内部引用它. function yell(n){ return n > 0 ? yell(n-1 ...
- DOM元素对象的属性和方法(2)
11.contentEditable 作用:设置或返回元素内容可否编辑布尔值,HTML5新增属性 <!DOCTYPE html> <html> <head> < ...
- C#:读取配置文件
以下代码演示如何读取配置文件---------------------Factory.cs----------------------------using System;using System.C ...
- 应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序事件日志,或使用命令行SxsTrace.exe工具
今天做项目,需要用C#引用C++的链接库文件,但是在调试的时候会报错这个错误. 运行SxsTrace.exe 以管理员用户登陆,启动cmd; 执行命令:SxsTrace Trace -logfile: ...
- C++学习笔录1
1.在实际开发中,引用类型变量值用于函数的参数中.它不会另外开辟空间(提高了程序效率),他相当于变量的别名,代表的就是当前这个变量的地址空间.(引用的底层用的是指针.因此从底层的角度讲,其实它的效率是 ...