我想制作一个应用程序,以网格模式显示文档、pdf、txt等文本文件,就像ImageView显示图像一样。在android中是否有这些文件的视图。代码如下所示,在此我可以查看网格中的图像,但不能查看文档文件。
public class MainActivity extends Activity implements OnItemClickListener{
public class ImageAdapter extends BaseAdapter {
private Context mContext;
ArrayList<String> itemList = new ArrayList<String>();
public ImageAdapter(Context c) {
mContext = c;
}
void add(String path){
itemList.add(path);
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(3, 3, 3, 3);
} else {
imageView = (ImageView) convertView;
}
Bitmap bm = decodeSampledBitmapFromUri(itemList.get(position), 100, 100);
imageView.setImageBitmap(bm);
return imageView;
}
public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) {
Bitmap bm = null;
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(path, options);
return bm;
}
public int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
if (width > height) {
inSampleSize = Math.round((float)height / (float)reqHeight);
} else {
inSampleSize = Math.round((float)width / (float)reqWidth);
}
}
return inSampleSize;
}
}
ImageAdapter myImageAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.gridview);
myImageAdapter = new ImageAdapter(this);
gridview.setAdapter(myImageAdapter);
gridview.setOnItemClickListener(this);
String ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory()
.getAbsolutePath();
String targetPath = ExternalStorageDirectoryPath + "/img/";
Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show();
File targetDirector = new File(targetPath);
File[] files = targetDirector.listFiles();
for (File file : files){
myImageAdapter.add(file.getAbsolutePath());
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
}
}
使用方式如下:
if(filetype.toString().equals(".pdf"))
{
//place your pdf image
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
}
else if(filetype.toString().equals(".docs"))
{
//place your docs image
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
}
else if(filetype.toString().equals(".txt "))
{
//place your txt image
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
}
如何在android中动态设置drawable中的图像?。希望这对你有帮助
我正在尝试做一个小应用程序,只显示图片从一个特定的文件夹在一个图库视图。我找到了几个例子,但每一个都只能显示一个图像。我将在下面发布的这个例子是一个很好的帮助,它做几乎完全是我想要它做的,我只需要改变它显示图像从特定的文件夹,而不是所有的文件夹。我花了几天的时间来尝试,但我似乎没有添加正确的代码。我觉得这是一件很简单的事情,我也错过了。如有任何帮助,我们将不胜感激!
问题内容: 我正在尝试从特定的URL获取图像,但会抛出异常。如果尝试从浏览器打开URL,则可以看到图像。请帮忙。下面是我的代码。谢谢。 问题答案: 我尝试这个,它的工作正常。谢谢。
我刚刚编写了一个仅带有LinearLayout的简单Android应用程序。我将此LinearLayout用作类的属性和方法的本地对象(例如在onCreate方法中)。 第一种情况:作为财产的线性布局 第二种情况:作为方法对象的线性布局 在这两种情况下,都没有错误。然而,当我在模拟器或设备上运行时,第一个案例出现了如下错误。为什么?我认为这个问题是由方法引起的。在调用onCreate方法之前,该方
我有一个android布局,它有一个,里面有很多元素。在的底部有一个,然后由适配器填充。 我遇到的问题是,android将从中排除,因为已经具有可滚动的功能。我希望与内容一样长,并且主滚动视图是可滚动的。 我怎样才能达到这种行为呢? 下面是我的主要布局: 然后以编程方式将组件添加到具有ID:的linearlayour中。下面是加载到LinearLayout中的一个视图。就是这个给我卷轴带来麻烦的。
问题内容: 如图所示,我有一个单击事件连接到我的列表视图。 我需要根据他们单击的列表项将字符串参数传递给新的意图。我要传递的值在名为txt_Genus的列表项中。如何从列表项中获取该值以传递给意图?请不要注意我的实验,哈哈。 问题答案: 这应该做。 然后将其放入意图附加功能中,我想您已经知道这一点。 编辑; 在您的新活动中,您将访问该意图并获得附加包。然后,您可以访问上一个活动中意图放置的任何内容
我的问题是两者都是两个独立的文本视图“你好”和“世界”第一个文本视图有32个字符限制。如果文本超过限制,我如何使它包装内容,并使“世界”保持在第一行? 下面是它目前的表现。 下面是我试图实现的代码。我试着写min_ems、max_ems和ems,但在平板电脑上看起来不太好。