九宫格与弹出框

1####    GridView

    xml:
    
<GridView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3"  列数
        android:horizontalSpacing="5dp" 单元格的水平间距
        android:verticalSpacing="5dp"  单元格的垂直间距
        android:stretchMode="columnWidth" > 拉伸方式
    </GridView>


在java中自己创建视图时需要通过要添加的目标容器的LayoutParams来配置布局参数(宽高、边距等等)

   
 iv = new ImageView(GridViewActivity.this);
    iv.setScaleType(ScaleType.FIT_CENTER);
    // 添加宽高
    AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                        LayoutParams.MATCH_PARENT, 200);
    //运用布局参数
    iv.setLayoutParams(lp);
    iv.setBackgroundColor(0xff333333);


####    弹出框
使用Activity自带的showDialog方法来显示

    showDialog(100);  //参数为id
    这个方法调用之后Activity会去找有没有该id的Dialog,没有则触发onCreateDialog方法
    
   
 protected Dialog onCreateDialog(int id) {
        //创建dialog
        if(id ==100){
            return create2BtnDialog();
        }
        return super.onCreateDialog(id);
    }


    填充创建Dialog的逻辑
    //弹出框的构造器
    
AlertDialog.Builder b = new AlertDialog.Builder(this);


   
 //组装弹出框标题
    b.setTitle("两个按钮的弹出框");
    //组装弹出框内容
    b.setMessage(R.string.dialog_msg);
    //设置一个正向按钮
    b.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(LearnDialogActivity.this, "确定按钮被点击", 2000).show();
            }
    });
    b.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(LearnDialogActivity.this, "取消按钮被点击", 2000).show();
            }
        });
    //创建Dialog对象
    Dialog dialog = b.create();
自己来控制显示和隐藏,可以直接调用Dialog的show方法显示,dismiss方法或者cancel方法隐藏
    
    if(null == twoBtnDialog){
        twoBtnDialog = create2BtnDialog();
    }
    //显示弹出框
    twoBtnDialog.show();

    隐藏
    dialog.dismiss(); -->可以通过dialog.setOnDismissListener(listener)监听到
    或者
    dialog.cancel(); -->用dialog.setOnCancelListener(listener)监听


列表框,可以通过builder对象的setItems设置列表

    
final String[] items = {"打开","复制","剪切","重命名","删除","发送到"};
    b.setItems(items, new DialogInterface.OnClickListener() {
                
            @Override
            public void onClick(DialogInterface dialog, int which) {
                setTitle(items[which]);
                //处理列表点击的逻辑,which表示列表的下标
            }
        });


针对字符串数组,可以在资源下通过<string-array>定义

     
<string-array name="m_array">   
        <item>打开</item>        每个item表示一个数组项
        <item>复制</item>
    </string-array>


java中获取数组资源    

   
 String[] ary = getResources().getStringArray(R.array.m_array);


####    Toast
    
  
  Toast t = Toast.makeText(this, "我是一个提示,你只能看看", Toast.LENGTH_SHORT);
    //设置显示位置(相对位置,x方向的偏移,y方向的偏移)
    t.setGravity(Gravity.LEFT|Gravity.TOP, 50, 200);
    t.show();


自定义Toast

   
 View layout = getLayoutInflater().inflate(R.layout.toast_layout, null);
     TextView tv = (TextView) layout.findViewById(R.id.toast_content);
     tv.setText("ABC");
     Toast t = new Toast(getApplicationContext()); //Context上下文对象-->环境
    //应用环境(组件窗口 服务) 窗口环境(Activity)
     //设置布局
     t.setView(layout);
     t.setGravity(Gravity.CENTER, 0, 0);
     //设置事件
     t.setDuration(Toast.LENGTH_LONG);
     t.show();


####    通知
Notification表示一个通知对象,可以描述一个状态栏上的通知信息

NotificationManager表示一个通知服务,通知显示和隐藏的功能

  
  nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
显示通知

    判断当前所在的平台版本,可以使用Build.VERSION.SDK_INT
    if (Build.VERSION.SDK_INT >= 16) {
        Notification.Builder b = new Notification.Builder(
                    getApplicationContext());
            // 组装信息
            // 在状态栏上停留一段时间之后小时的提示文本
            b.setTicker("您有新短消息");
            b.setSmallIcon(R.drawable.ic_launcher);
            // 配置下拉的内容标题
            b.setContentTitle("短信");
            b.setContentText("今天天气晴朗,啦啦啦啦啦");
            // 配置通知时间
            b.setWhen(System.currentTimeMillis());
            // 点击通知,跳转到一个目标组件
            Intent it = new Intent(NotificationActivity.this,
                    MyListActivity.class);
            //延迟的意图(Context对象,意图的id,具体的意图,意图更新方式)
            PendingIntent pIntent = PendingIntent.getActivity(
                    NotificationActivity.this, 1, it,
                    PendingIntent.FLAG_UPDATE_CURRENT);
            b.setContentIntent(pIntent);
            // 显示通知
            n = b.build();
    }
    显示通知
    nManager.notify(123456, n);
    取消显示
    nManager.cancel(123456);
Notification的额外设置
    
    //提醒的高级功能(闪灯、声音、震动)
    n.defaults = Notification.DEFAULT_LIGHTS;
    //通知的清除方式(FLAG_AUTO_CANCEL自动清除,FLAG_NO_CLEAR不自动清除)
    n.flags = Notification.FLAG_NO_CLEAR;
自定义通知

    //创建RemoteViews(应用包名,布局id)
    RemoteViews remoteView = new RemoteViews(
                    "com.xykj.android_apidemo", R.layout.notify_layout);
    remoteView.setTextViewText(R.id.m_text, "这是一个自定义的通知内容");
    remoteView.setOnClickPendingIntent(R.id.m_btn, pIntent);
    //设置自定义的下拉内容
    b.setContent(remoteView);
    

九宫格

public class GridViewActivity extends Activity {


	private int[] images = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3,
			R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7,
			R.drawable.pic8, R.drawable.pic9 };


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.grid_avtivity_layout);
		GridView mGrid = (GridView) findViewById(R.id.m_grid);
		// 需要有适配器,设置适配器
		MyGridAdapter adapter = new MyGridAdapter();
		mGrid.setAdapter(adapter);


	}


	class MyGridAdapter extends BaseAdapter {


		@Override
		public int getCount() {
			return images.length;
		}


		@Override
		public Object getItem(int position) {
			return images[position];
		}


		@Override
		public long getItemId(int position) {
			return position;
		}


		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 准备显示的视图
			ImageView iv;
			if (null == convertView) {
				iv = new ImageView(GridViewActivity.this);
				iv.setScaleType(ScaleType.FIT_CENTER);
				// 添加宽高
				AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
						LayoutParams.MATCH_PARENT, 200);
//				iv.setPadding(left, top, right, bottom)
				iv.setLayoutParams(lp);
				iv.setBackgroundColor(0xff333333);
			}else{
				iv = (ImageView) convertView;
			}
			// 将数据跟视图关联
			iv.setImageResource(images[position]);
			return iv;
		}
	}
}

悬浮框与菜单栏

public class PopuWindowActivity extends Activity implements OnClickListener {
	private Button btnShow;
	private Button btnPopuMenu;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.popu_window_activity);
		btnShow = (Button) findViewById(R.id.m_btn1);
		btnShow.setOnClickListener(this);


		btnPopuMenu = (Button) findViewById(R.id.m_btn2);
		btnPopuMenu.setOnClickListener(this);
	}


	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.m_btn1:
			showPopuWindow();
			break;
		case R.id.menu_01:
			// 隐藏窗口
			window.dismiss();


			Toast.makeText(this, "扫一扫", 2000).show();
			break;
		case R.id.menu_02:
			window.dismiss();
			Toast.makeText(this, "发起群聊", 2000).show();
			break;
		case R.id.m_btn2:
			showPopuMenu();
			break;


		default:
			break;
		}
	}


	private PopupWindow window;


	private void showPopuWindow() {
		if (null == window) {
			// 先加载窗口的布局
			View layout = getLayoutInflater().inflate(R.layout.popu_layout,
					null);
			layout.findViewById(R.id.menu_01).setOnClickListener(this);
			layout.findViewById(R.id.menu_02).setOnClickListener(this);
			// 创建了弹出框
			window = new PopupWindow(layout, 200,
					ViewGroup.LayoutParams.WRAP_CONTENT);
			// 配置弹出框的其他信息
			// 设置背景(能够响应返回键)
			window.setBackgroundDrawable(new ColorDrawable());
			// 设置获取焦点
			window.setFocusable(true);
			window.setOutsideTouchable(true);
		}
		// 显示窗口
		window.showAsDropDown(btnShow, -100, 0);
		// window.showAtLocation(parent, gravity, x, y)
	}


	// @Override
	// public boolean onCreateOptionsMenu(Menu menu) {
	// getMenuInflater().inflate(R.menu.main, menu);
	// return true;
	// }
	//
	// @Override
	// public boolean onOptionsItemSelected(MenuItem item) {
	// return super.onOptionsItemSelected(item);
	// }


	private PopupMenu pMenu;


	private void showPopuMenu() {
		if (null == pMenu) {
			// 创建PopuMenu(第二个参数表示触发该弹出菜单的视图)
			pMenu = new PopupMenu(this, btnPopuMenu);
			// 向popumenu中添加菜单
			pMenu.getMenuInflater().inflate(R.menu.main, pMenu.getMenu());
			// 设置菜单项的点击监听
			pMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {


				@Override
				public boolean onMenuItemClick(MenuItem item) {
					// 根据菜单项的id来区分菜单
					switch (item.getItemId()) {
					case R.id.action_settings:
						Toast.makeText(PopuWindowActivity.this,
								item.getTitle(), 2000).show();
						break;
					}
					return true;
				}
			});
		}
		pMenu.show();
	}


}


    

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值