Android Develop Tricks—1

Android Develop Tricks

设置AlertDialog的大小:

		AlertDialog dialog = builder.setTitle("消息列表")
							.setView(layout)
							.create();
		dialog.show();
		//设置窗口的大小
		dialog.getWindow().setLayout(300, 200);

dialog.show();一定要放在dialog.getWindow().setLayout(300, 200);的前面,否则不起作用。

另一种实现:

WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = 300;
params.height = 200;
dialog.getWindow().setAttributes(params);

实际上setLayout就是对这个方法的封装:

        final WindowManager.LayoutParams attrs = getAttributes();
        attrs.width = width;
        attrs.height = height;
        if (mCallback != null) {
            mCallback.onWindowAttributesChanged(attrs);
        }

任意位置显示View:

通过WindowManager来实现添加View:

mWindowManager = getWindowManager();
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        mDialogView = inflater.inflate(R.layout.dialogview, null);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams();
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
        params.y += 100;
        params.x += -30;
        initDialogComponents(mDialogView);
        //添加对话框
        mWindowManager.addView(mDialogView, params);

任意View的触摸移动通用方法:

同样是重写onTouchEent

package ui;

import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
/**
 *
 * @author chenxiruanhai
 *
 *
 */
public class MenuButton extends Button {
	private Context mContext;
	private WindowManager mWm;

	int lastX;
	int lastY;
	int screenWidth;
	int screenHeight;

	public MenuButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.mContext = context;
		mWm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
		DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
		screenWidth = dm.widthPixels;
		screenHeight = dm.heightPixels;
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		super.onTouchEvent(event);
		measure(0, 0);
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			lastX = (int) event.getRawX();
			lastY = (int) event.getRawY();
			break;
		case MotionEvent.ACTION_MOVE:
			int dx = (int) event.getRawX() - lastX;
			int dy = (int) event.getRawY() - lastY;
			int left = this.getLeft() + dx;
			int top = this.getTop() + dy;
			int right = this.getRight() + dx;
			int bottom = this.getBottom() + dy;
			if (left < 0) {
				left = 0;
				right = left + this.getWidth();
			}
			if (right > screenWidth) {
				right = screenWidth;
				left = right - this.getWidth();
			}
			if (top < 0) {
				top = 0;
				bottom = top + this.getHeight();
			}
			if (bottom > screenHeight) {
				bottom = screenHeight;
				top = bottom - this.getHeight();
			}
			this.layout(left, top, right, bottom);
			lastX = (int) event.getRawX();
			lastY = (int) event.getRawY();
			lastX = (int) event.getRawX();
			lastY = (int) event.getRawY();
			break;
		case MotionEvent.ACTION_UP:{
			Animation alphaAnimation = new AlphaAnimation( 0.5f,1f);
			 alphaAnimation.setDuration(1000);
			 Animation scaleAnimation2 = new ScaleAnimation(1.0f, .5f,1.0f,.5f);
			 scaleAnimation2.setDuration(500);
			 AnimationSet animationSet = new AnimationSet(true);
			 animationSet.addAnimation(alphaAnimation);
			 animationSet.addAnimation(scaleAnimation);
			 animationSet.addAnimation(scaleAnimation2);
			 animationSet.setFillAfter(true);
			Animation currentAnima = getAnimation();
			if(null!=currentAnima) {
				currentAnima.cancel();
				animationSet.reset();
			}
			 startAnimation(animationSet);
		}
			break;
		}
		return true;
	}
}

ImageView设置属性scaleType为FIT_START后去掉多余空白

	imageView.setScaleType(ImageView.FIT_START);
        imageView.setAdjustViewBounds(true);
时间: 2024-08-07 16:38:58

Android Develop Tricks—1的相关文章

Android develop tricks——整理自国外的一些Blog

ViewDragHelper --视图拖动是一个比较复杂的问题.这个类可以帮助解决不少问题.如果你需要一个例子,DrawerLayout就是利用它实现扫滑.Flavient Laurent 还写了一些关于这方面的优秀文章. PopupWindow--Android到处都在使用PopupWindow ,甚至你都没有意识到(标题导航条ActionBar,自动补全AutoComplete,编辑框错误提醒Edittext Errors).这个类是创建浮层内容的主要方法. Actionbar.getThe

Android develop文档研究开篇

今天开始学习Android develop的文档吧. http://developer.android.com/index.html 先翻译,打好底子. 暂时订的计划是按照workflow的文档顺序开始阅读: http://developer.android.com/tools/workflow/index.html fighting!

ubuntu14.04 android develop environment setup for android and linux driver

//For android and linux driver// 1,install ubuntu14.04 usb boot, CD boot, vmware workstation install, etc take usb boot for an example, download Universal-USB-Installer-1.9.5.6.exe and ubuntu-14.04.2-desktop-amd64.iso at windows xp platform. i take m

Android Develop:构建系统概述

Android构建系统是你用来构建.测试.运行和打包你的app的工具集.这个构建系统能作为Android Studio菜单的一个集成工具.和独立命令的方式运行.你能使用这个构建系统的如下功能: 自定义,配置,和扩展构建过程: 使用同一个项目和模块,为你的App创建多个不同功能的Apk: 通过资源集合的方式重用代码和资源: Android构建系统非常灵活,可以使你实现一切功能,并且不用修改你的app的核心源代码.如何构建一个Android Studio项目,阅读Building and Runni

eclipse / ADT(Android Develop Tool) 一些方便的初始设置

1.设置编辑窗口的背景色eclipse的主编辑窗口的背景色,默认为白色,个人感觉太亮,推荐保护视力的“墨绿色”,当然也可以根据个人喜好更改,如下图 2.主编辑窗口的字体字号等,也可以根据自己的爱好设置,个人把字体调大了,如下图: 开发Android,经常还会用到XMl布局文件,上面的设置,只对代码文件有效,打开xml文件发现字体还很小,xml文件字体设置如下: 3.自动代码补全设置. android接口很多,当然需要代码提示功能,就是指“输入几个字符,后面自动补全”.关于这个设置,我详细说明下:

Android 性能优化 三 布局优化ViewStub标签的使用

小黑与小白的故事,通过虚拟这两个人物进行一问一答的形式来共同学习ViewStub的使用 小白:Hi,小黑,ViewStub是什么?听说可以用来进行布局优化. 小黑:ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件.(更多详细的API等信息可以查看官方文档ViewStub),计算机行业一向是实践里面出真知,下面用一个例子演示下效果. 小黑:说说概念只是为了概括性的了解下,还是用个实例来演示下.先来创建一个Activity中使用的布局文件,文件名是:act

Android 性能优化 四 布局优化merge标签的使用

小白:之前分享了ViewStub标签的使用,Android还有其他优化布局的方式吗? 小黑:<merge />标签用于减少View树的层次来优化Android的布局.先来用个例子演示一下: 首先主需要一个配置文件activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andr

Android开发第一天

今天做了两件事,一是开通了博客,准备在大学即将结束的时候开始做点正经事:二是搭建好了android的开发环境,并且终于在自己的手机上调试成功了第一个“helloworld”. 第一件事,准备写博客,自己觉着应该算是一件不错的事情.看过很多人写博客,但看的杂文累较多,纯技术性文章读的少之又少.当年韩寒的“韩三篇”写出来的时候没能及时读到,已经错过了新浪博客辉煌年代的光景.现在愿意写杂文的博主已经少的可怜了,但是一些像csdn等的技术分享型的论坛博客等,虽然热度也有缩减,但作为一个即将工作的程序猿来

Android 学习之开发环境搭建(2015/1/28)

作者:thoughtInShare 出处:http://www.cnblogs.com/thoughtInShare 欢迎转载,也请保留这段声明.谢谢! 1.Android 开发环境的需要如下三个工具: (1) JRE(Java Runtime Environment) (2)ADT(Android Develop Tool) 此工具包含了 Eclipse 及 Android SDK(Android Software Development Kit) (3)NDK(Native Developm