Android Develop Tricks—1

來源:互聯網
上載者:User

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;}@Overridepublic 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);




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.