我想实现的效果如下:
上面是定义的一个textView,下面是定义的一个textSwitch,分别用来显示图片的代号,切换一张显示相应的号,代码如下:
tv = (TextView) findViewById(R.id.textView1);
ts = (TextSwitcher) findViewById(R.id.textSwitcher1);
ts.setFactory(this);
SDPATH = Environment.getExternalStorageDirectory()+"/PIC/dong.png";
galleryFlow.setOnItemSelectedListener(this);//焦点改变的时候相应的变化
galleryFlow.setSelection(1);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
savePic(getViewBitmap(getWindow().getDecorView()),SDPATH);//截取当前屏幕
Toast.makeText(getApplicationContext(), "savePic success!!!", Toast.LENGTH_SHORT).show();
Log.d("tag", "success!!!");
}
});
}
public static Bitmap getViewBitmap(View v) {
v.clearFocus();
v.setPressed(false);
// 能画缓存就返回false
boolean willNotCache = v.willNotCacheDrawing();
v.setWillNotCacheDrawing(false);
int color = v.getDrawingCacheBackgroundColor();
v.setDrawingCacheBackgroundColor(0);
if (color != 0) {
v.destroyDrawingCache();
}
v.buildDrawingCache();
Bitmap cacheBitmap = v.getDrawingCache();
if (cacheBitmap == null) {
// Log.e(TAG, "failed getViewBitmap(" + v + ")", new
// RuntimeException());
return null;
}
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
// Restore the view
v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);
return bitmap;
}
// 保存到sdcard
// savePic(getViewBitmap(v), "sdcard/xx.png");
private static void savePic(Bitmap b, String strFileName) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(strFileName);
if (null != fos) {
b.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public View makeView() {
// TODO Auto-generated method stub
TextView tv = new TextView(this);
tv.setTextSize(30);
return tv;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Log.d("tag", "position--->"+position);
tv.setText(temp1[position]);
ts.setText(temp1[position]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
Log.d("tag", "onNothingSelected");
}