編輯:關於Android編程
之前做過iOS下的放大鏡功能,這個再來一個Android版的。下載地址:http://download.csdn.net/detail/qqmcy/7038411
ShaderView.java
package com.pactera.magnifierdemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Shader.TileMode; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.view.MotionEvent; import android.view.View; /** * 放大鏡實現方式1 * * @author 杜甲同學 * */ public class ShaderView extends View { private final Bitmap bitmap; private final ShapeDrawable drawable; // 放大鏡的半徑 private static final int RADIUS = 50; // 放大倍數 private static final int FACTOR = 3; private final Matrix matrix = new Matrix(); public ShaderView(Context context) { super(context); Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.changmen); bitmap = bmp; BitmapShader shader = new BitmapShader(Bitmap.createScaledBitmap(bmp, bmp.getWidth() * FACTOR, bmp.getHeight() * FACTOR, true), TileMode.CLAMP, TileMode.CLAMP); // 圓形的drawable drawable = new ShapeDrawable(new OvalShape()); drawable.getPaint().setShader(shader); drawable.setBounds(0, 0, RADIUS * 2, RADIUS * 2); } @Override public boolean onTouchEvent(MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); // 這個位置表示的是,畫shader的起始位置 matrix.setTranslate(RADIUS - x * FACTOR, RADIUS - y * FACTOR); drawable.getPaint().getShader().setLocalMatrix(matrix); // bounds,就是那個圓的外切矩形 drawable.setBounds(x - RADIUS, y - RADIUS, x + RADIUS, y + RADIUS); invalidate(); return true; } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(bitmap, 0, 0, null); drawable.draw(canvas); } }
MainActivity.java
package com.pactera.magnifierdemo; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.LinearLayout; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); ShaderView view = new ShaderView(getBaseContext()); addContentView(view, params); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
從今天起傻蛋打算做一個系列文章,對最新的Android4.0系統中的Launcher,也就是Android4.0原生的桌面程序,進行一個深入淺出的分析,從而引領Andro
關於如何對圖片進行模糊處理,網上方法比較多,常用而又便捷的方法就是使用高斯模糊,但網上的方法大多效果並不理想,今天分享一個之前項目中用到的模糊處理方法來實現高斯模糊,好了
第一次接觸樹形ListView是一年前,當時公司做的項目是一個企業的員工管理軟件,在展示員工時用到的,我花了大半天時間,才把樹形ListView搞明白,完成任務後就沒有然
本文實現了Android程序文字翻轉動畫的小程序,具體代碼如下:先上效果圖如下:要求:沿Y軸正方向看,數值減1時動畫逆時針旋轉,數值加1時動畫順時針旋轉。實現動畫的具體細