自定义View显示第一个文字和生成png到sd卡

来源:互联网 发布:服务器1433端口不通 编辑:程序博客网 时间:2024/06/08 12:34

  第一次在csdn写博客,作为一个对自定义view学习的开始吧。功能是输入字符串显示第一个字符在view上和生成png到sd卡,很简单直接贴代码了:


    

package main.beini.com.wordstranpic.utils;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.widget.ImageView;/** * Created by beini on 2016/8/13 */public class WordsSowView extends ImageView {   private String str = "";   public WordsSowView(Context context) {      super(context);   }   public WordsSowView(Context context, AttributeSet attrs) {      super(context, attrs);   }   public WordsSowView(Context context, AttributeSet attrs, int defStyleAttr) {      super(context, attrs, defStyleAttr);   }   @Override   public void setBackground(Drawable background) {      super.setBackground(background);   }   public void setString(String str) {      if (str == null || str.length() == 0) {         return;      }      this.str = str.substring(0, 1);      invalidate();   }   Paint p;   @Override   protected void onDraw(Canvas canvas) {      super.onDraw(canvas);      p = new Paint();      p.setColor(Color.WHITE);      p.setTextSize(175f);      Rect rect = new Rect();      p.getTextBounds(str, 0, str.length(), rect);      int w = rect.width();      int h = rect.height();      canvas.drawText(str, this.getWidth() / 2 - w / 2, this.getHeight() / 2 + h / 2, p);   }}


package main.beini.com.wordstranpic;import android.graphics.Bitmap;import android.graphics.Color;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.EditText;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import main.beini.com.wordstranpic.utils.WordsSowView;public class ShowWordsActivity extends AppCompatActivity {   private WordsSowView wordsSowView;   EditText edt_input;   @Override   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_show_words);      initView();   }   private void initView() {      edt_input = (EditText) findViewById(R.id.edt_input);      wordsSowView = (WordsSowView) findViewById(R.id.my_view);   }   public void showText(View view) {      if (TextUtils.isEmpty(edt_input.getText())) {         return;      }      wordsSowView.setString(edt_input.getText().toString());      wordsSowView.setBackgroundColor(Color.BLUE);   }   public void savePic(View view) {      new Thread(new Runnable() {         @Override         public void run() {            // 获取bitmap转换为png            wordsSowView.buildDrawingCache();            Bitmap bitmap = wordsSowView.getDrawingCache();            long current = System.currentTimeMillis();            String path = Environment.getExternalStorageDirectory() + "/" + current + ".png";            FileOutputStream os = null;            try {               os = new FileOutputStream(new File(path));               bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);               os.flush();               os.close();            } catch (FileNotFoundException e) {               e.printStackTrace();            } catch (IOException e) {               e.printStackTrace();            }         }      }).start();   }}

<?xml version="1.0" encoding="utf-8"?><LinearLayout    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"    android:orientation="vertical"    tools:context="main.beini.com.wordstranpic.ShowWordsActivity">    <EditText        android:id="@+id/edt_input"        android:layout_width="match_parent"        android:layout_height="wrap_content"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="15dp"        android:onClick="showText"        android:text="显示第一个字"/>    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:onClick="savePic"        android:text="生成图片保存在内存卡"/>    <main.beini.com.wordstranpic.utils.WordsSowView        android:id="@+id/my_view"        android:layout_width="100dp"        android:layout_height="100dp"        android:layout_gravity="center_horizontal"        android:layout_marginTop="35dp"        android:background="@color/colorAccent"/></LinearLayout>

1 0