手繪圖片

/**
 * 在圖片上作畫(huà)
 * 
 * @author admin
 * @time 2015年2月8日 上午1:12:18
 */
public class MainActivity extends Activity implements OnTouchListener {

    private ImageView mImageView;
    private Bitmap bitmap;
    private Canvas canvas;
    private float downX;
    private float downY;
    private Paint paint;
    private EditText etPaintWidth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 找到控件
        mImageView = (ImageView) findViewById(R.id.iv);

        etPaintWidth = (EditText) findViewById(R.id.et_paintWidth);
        // 為圖片控件設(shè)置觸摸事件
        mImageView.setOnTouchListener(this);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:// 按下
            if (bitmap == null) {
                // 創(chuàng)建一張空白圖片,寬,高和ImageView一樣
                bitmap = Bitmap.createBitmap(mImageView.getWidth(),
                        mImageView.getHeight(), Config.ARGB_8888);

                // 把空白圖片設(shè)置給Canvas畫(huà)畫(huà)板, canvas所繪制的東西都繪制到當(dāng)前圖片Bitmap上
                canvas = new Canvas(bitmap);

                // 創(chuàng)建一個(gè)畫(huà)筆
                paint = new Paint();
                // 設(shè)置畫(huà)筆的顏色
                paint.setColor(Color.RED);
                // 設(shè)置畫(huà)筆畫(huà)線時(shí)的粗細(xì)
                
                String spaintWidth = etPaintWidth.getText().toString().trim();
                int paintWidth = Integer.valueOf(spaintWidth);
                paint.setStrokeWidth((float) paintWidth);

                // 給畫(huà)布畫(huà)一個(gè)背景色
                canvas.drawColor(Color.YELLOW);
            }

            downX = event.getX();
            downY = event.getY();

            System.out.println("按下了...:X:" + downX + ",Y:" + downY);
            break;
        case MotionEvent.ACTION_MOVE:
            float moveX = event.getX();
            float moveY = event.getY();
            // 開(kāi)始畫(huà)線, 這一行代碼執(zhí)行完畢, Bitmap中有一條線了.
            canvas.drawLine(downX, downY, moveX, moveY, paint);
            
            mImageView.setImageBitmap(bitmap);

            downX = moveX;
            downY = moveY;
            break;
        case MotionEvent.ACTION_UP:
            System.out.println("抬起了.......");
            break;
        }
        return true;
    }

    /**
     * 將手繪的圖片保存到SD卡中
     * 
     * @param v
     */
    public void save(View v) {
        if (bitmap != null) {
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream("/mnt/sdcard/hehe.jpg");
                bitmap.compress(CompressFormat.JPEG, 100, fos);
                Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fos != null) {
                        fos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/et_paintWidth"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="請(qǐng)輸入畫(huà)筆的粗細(xì)度" />

    <ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/et_paintWidth" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:onClick="save"
        android:text="保存" />

</RelativeLayout>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纱意,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颤陶,老刑警劉巖瘪板,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佩微,死亡現(xiàn)場(chǎng)離奇詭異旅敷,居然都是意外死亡绞佩,警方通過(guò)查閱死者的電腦和手機(jī)癣亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)丑掺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人述雾,你說(shuō)我怎么就攤上這事街州。” “怎么了玻孟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵唆缴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我黍翎,道長(zhǎng)面徽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任玩敏,我火速辦了婚禮斗忌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旺聚。我一直安慰自己织阳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布砰粹。 她就那樣靜靜地躺著唧躲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碱璃。 梳的紋絲不亂的頭發(fā)上弄痹,一...
    開(kāi)封第一講書(shū)人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音嵌器,去河邊找鬼肛真。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爽航,可吹牛的內(nèi)容都是我干的蚓让。 我是一名探鬼主播乾忱,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼历极!你這毒婦竟也來(lái)了窄瘟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趟卸,失蹤者是張志新(化名)和其女友劉穎蹄葱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锄列,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡图云,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了右蕊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琼稻。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吮螺,死狀恐怖饶囚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸠补,我是刑警寧澤萝风,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站紫岩,受9級(jí)特大地震影響规惰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泉蝌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一歇万、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勋陪,春花似錦贪磺、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至违孝,卻和暖如春刹前,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雌桑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工喇喉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人校坑。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓拣技,卻偏偏與公主長(zhǎng)得像衅鹿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子过咬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345